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

时间:2012-03-21 08:41:12

标签: silverlight mef wcf-ria-services silverlight-oob

目前我正在尝试检查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; }

1 个答案:

答案 0 :(得分:0)

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

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

你应该重命名OnServiceAvailable,比如OnOperationComplete。

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