Ria服务和OOB:检查服务是否可访问,MEF不导入我的视图



嗨,目前我正在尝试检查Ria服务是否可用于我们的OOB应用程序。

 public static void IsServiceReachable(Action onServiceAvailable, Action onServiceUnavailable)
       {
            try {
                DomainContext context = new DomainContext();
                InvokeOperation<bool> invokeOperation = context.IsAlive();
                invokeOperation.Completed += (s, arg) => onServiceAvailable();
            }
            catch (Exception) {
                onServiceUnavailable();
            }
        }

当异常发生时,我的应用程序挂起,现在只是一个白色屏幕。我做得对吗?

我还在应用程序中使用MEF,我很懒地导入我的视图,遗憾的是,当Ria Service无法访问时,MEF不会导入我的观点:(我正在调用CompositionInitializer.SatisfyImports(this)。

[ImportMany(AllowRecomposition = true)]
public Lazy<BaseUserControl, IViewMetadata>[] Views { get; set; }

您是否尝试检查OnServiceAvailable回调中是否发生错误:

void OnServiceAvailable(object sender, EventArgs e)
{
    InvokeOperation op = sender as InvokeOperation;
    if (op.HasError) {
        Exception exception = op.Error;
        ...
    } else {
        ...
    }
}

您可能应该将OnServiceAvailable重命名为类似于OnOperationComplete的名称。

您必须处理回调中的错误,包括"ServiceNotAvailable"错误。请记住,这是一个异步调用——客户端在继续之前不会等待服务器响应。

最新更新