本文介绍了如何在 Silverlight 应用程序中使用 WCF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我想知道如何在我的 Silverlight 应用程序中使用普通的 WCF 服务(不是启用 Silverlight 的 WCF 服务).这是我试过的I want to know how I can consume a normal WCF service (not Silverlight enabled WCF service) in my Silverlight application. Here is what I tried我创建了一个简单的普通 WCF 服务我在 web.config 文件中将绑定更改为 basicHttpBinding我已将 clientaccesspolicy.xml 和 crossdomain.xml 文件放在 wwwroot 文件夹中.I have created a simple normal WCF serviceI changed the binding to basicHttpBinding in the web.config fileI have placed clientaccesspolicy.xml and crossdomain.xml files in wwwroot folder.但即使我无法使用 WCF 服务.我得到这个例外But even though I am unable to consume the WCF service. I get this exceptionSystem.ServiceModel.CommunicationException 未被用户代码处理消息=尝试向 URI 发出请求时发生错误'http://localhost/HWT/HelloWorldService.svc'.这可能是由于试图以跨域方式访问服务而没有适当的存在跨域策略,或不适合 SOAP 的策略服务.您可能需要联系服务的所有者才能发布跨域策略文件并确保它允许与 SOAP 相关的 HTTP要发送的标头.这个错误也可能是使用内部在不使用 Web 服务代理的情况下键入InternalsVisibleToAttribute 属性.请看内部异常了解更多详情.堆栈跟踪:在 System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult 结果)在 System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)在 System.ServiceModel.ClientBase1.ChannelBase1.EndInvoke(StringmethodName, Object[] args, IAsyncResult 结果)在 ServiceRef.HelloWorldServiceClient.HelloWorldServiceClientChannel.EndGetName(IAsyncResult结果)在 ServiceRef.HelloWorldServiceClient.TestSilClient.ServiceRef.IHelloWorldService.EndGetName(IAsyncResult 结果)在 TestSilClient.ServiceRef.HelloWorldServiceClient.OnEndGetName(IAsyncResult结果)在 System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult结果)内部异常:System.Security.SecurityException消息=""堆栈跟踪:在 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallbackbeginMethod, 对象状态)在 System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult异步结果)在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult 结果)InnerException: System.Security.SecurityException Message="" StackTrace: at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)内部异常:System.Security.SecurityException消息=安全错误.堆栈跟踪:在 System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult异步结果)在 System.Net.Browser.BrowserHttpWebRequest.c_DisplayClass5.b_4(Object发送状态)在 System.Net.Browser.AsyncHelper.c_DisplayClass4.b_1(对象发送状态)InnerException: System.Security.SecurityException Message=Security error. StackTrace: at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.BrowserHttpWebRequest.<>c_DisplayClass5.b_4(Object sendState) at System.Net.Browser.AsyncHelper.<>c_DisplayClass4.b_1(Object sendState)谁能解释一下在 Silverlight 应用程序中使用普通 WCF 服务的最佳方式是什么?一个例子会帮助我.Can anyone explain what is the best way to consume normal WCF service in a Silverlight app? An example will help me.谢谢.推荐答案尝试放松您的跨域文件(只是为了测试)以验证是否是问题所在.在您的 crossdomain.xml 文件中使用此代码,看看它是否有效:Try to loosen up your crossdomain file (just for the sake of test) to verify if it's the issue. Use this code in your crossdomain.xml file and see if it works:<?xml version="1.0" ?><cross-domain-policy> <allow-access-from domain="*"/> <site-control permitted-cross-domain-policies="all"/> <allow-http-request-headers-from domain="*" headers="*"/></cross-domain-policy> 这篇关于如何在 Silverlight 应用程序中使用 WCF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-04 08:43