Silverlight calling Windows Workflow Foundation as a web service
I'm trying to call a Windows Workflow Foundation published as a web service from a Silverlight project. When I call it from a console application it works fine because I can add a web reference, make an instance of that webservice, and invoke the method I want. The problem is in the Silverlight project because I can just add a service reference so I find myself working with SOAP stuff that doesn't work at all, and here is the code:
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;
}
Update:
This is the error message. I know it may look difficult because it's in French:
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.Se开发者_运维技巧rviceModel.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:
Did you check whether or not the WCF service is callable by Silverlight?
- Make sure a cross domain policy file is present and correctly configured on the server
- Make sure a binding is used that can be called from within Silverlight
There is more but my bet is on #1
Take a look at Windows Workflow Foundation (WF4) - Silverlight / State Machine Workflow Service
精彩评论