Silverlight无法与RIA服务交谈

时间:2010-08-18 14:35:29

标签: .net silverlight wcf ria

我已按照此处的教程:http://www.silverlight.net/learn/tutorials/sqldatagrid-cs/


ANSWER :当我在调试器中运行此东西时,它在端口16048上启动它。同时,ServiceReferences.ClientConfig使用端口15459获得端点地址。不知道为什么会这样做,但是一旦我改变它所以它正在访问端口16048上的服务,它很好。我注意到端口有所不同,但是出于某些理智的原因,它假设它正在使用不同的端口进行服务。当我们假设时,我们都知道我们是谁,我们不是......

底线:右键单击解决方案资源管理器中的服务项目,属性|网络|特定港口


在本教程中,您将创建一个简单的Silverlight XAP,在同一解决方案中创建RIA服务,并从Silverlight调用该服务。我一直在使用内置的Web服务器在VS2010中运行它。当对服务的异步调用完成时,结果的_error设置为System.ServiceModel.CommunicationException(见下文)。

我不能过分强调服务和Silverlight应用程序都在同一台机器上,同一台物理计算机放在我的桌面上。我添加了crossdomain.xml和clientaccesspolicy.xml

本教程是从2008年开始的,在某些方面似乎已经过时了。 RIA似乎很方便,但Silverlight根本不支持它吗? MS已经放弃了WCF和/或RIA吗?是否有其他新方法可以将数据从服务器获取到Silverlight?什么是域名服务?那个更好吗?这是最后一件大事还是下一件大事?怎么跟踪谁?

  

e._error {System.ServiceModel.CommunicationException:错误   尝试向URI发出请求时发生   'http://localhost:15459/Service1.svc'。这可能是由于尝试   在没有适当的情况下以跨域方式访问服务   适当的跨域策略,或不适合SOAP的策略   服务。您可能需要联系服务所有者进行发布   跨域策略文件,并确保它允许与SOAP相关的HTTP   要发送的标头。使用内部也可能导致此错误   Web服务代理中的类型,而不使用   InternalsVisibleToAttribute属性。请查看内部异常   更多细节。 ---> System.Security.SecurityException --->   System.Security.SecurityException:安全性错误。在   System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult的   asyncResult)at   System.Net.Browser.BrowserHttpWebRequest<> c__DisplayClass5.b__4(对象   sendState)at   System.Net.Browser.AsyncHelper<> c__DisplayClass2.b__0(对象   sendState)---内部异常堆栈跟踪结束--- 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的   结果)---内部异常堆栈跟踪结束--- at   System.ServiceModel.AsyncResult.End [TAsyncResult](IAsyncResult结果)   在   System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult   结果)在   System.ServiceModel.Channels.ServiceChannel.EndCall(String action,   对象[]出,IAsyncResult结果)at   System.ServiceModel.ClientBase 1.ChannelBase 1.EndInvoke(字符串   methodName,Object [] args,IAsyncResult result)at   SilverlightApplication1.ServiceReference1.Service1Client.Service1ClientChannel.EndGetITEM_THINGs(IAsyncResult的   结果)在   SilverlightApplication1.ServiceReference1.Service1Client.SilverlightApplication1.ServiceReference1.IService1.EndGetITEM_THINGs(IAsyncResult的   结果)在   SilverlightApplication1.ServiceReference1.Service1Client.OnEndGetITEM_THINGs(IAsyncResult的   结果)在   System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult的   结果)} System.Exception {System.ServiceModel.CommunicationException}

1 个答案:

答案 0 :(得分:1)

从错误消息中,我猜您的clientaccesspolicy.xml文件不在正确的位置(必须位于服务的根目录中),或者未配置为允许访问该服务。有关使用Silverlight访问服务的更多信息,请查看HTTP Communication and Security with Silverlight

Microsoft尚未放弃WCF和/或RIA。