Silverlight将Windows Workflow Foundation称为Web服务

时间:2010-04-19 20:21:31

标签: silverlight workflow-foundation

我正在尝试从Silverlight项目中调用作为Web服务发布的Windows Workflow Foundation。当我从控制台应用程序调用它时,它工作正常,因为我可以添加Web引用,创建该Web服务的实例,并调用我想要的方法。问题出在Silverlight项目中,因为我可以添加一个服务引用,所以我发现自己使用的SOAP根本不起作用,这里是代码:

private void btnUpdate_Click(object sender, RoutedEventArgs e)
{
    xxxxxxx.Workflow1_WebServiceSoapClient zer = new xxxxx.Workflow1_WebServiceSoapClient();
    zer.demanderSubmitReportCompleted += new EventHandler<xxxxxxxxxxxxxxx.demanderSubmitReportCompletedEventArgs>(service2);
    zer.demanderSubmitReportAsync("zzz", 20000);

}

public void service2(object sender, xxxxx.demanderSubmitReportCompletedEventArgs e)
{
        string a = e.Result;
}

更新

这是错误消息。我知道它可能看起来很难,因为它是法语:

L'exception System.ServiceModel.CommunicationException n'a pas été gérée par le code utilisateur
  Message="Une erreur s'est produite en tentant d'effectuer une demande à l'URI 'http://localhost:49783/AED_DA_Workflow_Services_WebService/AED_DA_Workflow_Services.Workflow1_WebService.asmx'. Ce problème peut être dû à une tentative d'accès à un service entre domaines sans qu'une stratégie entre domaines appropriée soit en place, ou une stratégie inadaptée aux services SOAP. Il est possible que vous soyez contraint de contacter le propriétaire du service pour publier un fichier de stratégie entre domaines et veiller à ce qu'il autorise l'envoi d'en-têtes HTTP SOAP. Cette erreur peut également être liée à l'utilisation de  types internes dans le proxy de service Web sans utiliser l'attribut InternalsVisibleToAttribute. Consultez l'exception interne pour plus de détails."
  StackTrace:
       à System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
       à System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
       à System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
       à System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
       à AEDSilverlightIntegrated.AED_DA_Workflow_Services_WebService.Workflow1_WebServiceSoapClient.Workflow1_WebServiceSoapClientChannel.EnddemanderSubmitReport(IAsyncResult result)
       à AEDSilverlightIntegrated.AED_DA_Workflow_Services_WebService.Workflow1_WebServiceSoapClient.AEDSilverlightIntegrated.AED_DA_Workflow_Services_WebService.Workflow1_WebServiceSoap.EnddemanderSubmitReport(IAsyncResult result)
       à AEDSilverlightIntegrated.AED_DA_Workflow_Services_WebService.Workflow1_WebServiceSoapClient.EnddemanderSubmitReport(IAsyncResult result)
       à AEDSilverlightIntegrated.AED_DA_Workflow_Services_WebService.Workflow1_WebServiceSoapClient.OnEnddemanderSubmitReport(IAsyncResult result)
       à System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
  InnerException: System.Security.SecurityException
       Message=""
       StackTrace:
            à System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
            à System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
            à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
       InnerException: System.Security.SecurityException
            Message="Erreur de sécurité."
            StackTrace:
                 à System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
                 à System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
                 à System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
            InnerException: 

2 个答案:

答案 0 :(得分:1)

您是否检查过WCF service is callable by Silverlight

  1. 确保cross domain policy文件存在并在服务器上正确配置
  2. 确保使用可从Silverlight
  3. 中调用的绑定

    还有更多,但我的赌注是#1

答案 1 :(得分:1)