Rob*_*cus 6 silverlight wcf exception
编辑
看了一会儿后,我觉得这可能是我开发盒上的配置问题.但是,在将源代码干净地下载到不同的开发机器之后,我仍然遇到了这个问题.
我有一个Silverlight客户端异步调用WCF服务.间歇性地,我会得到一个通用NotFound例外.异常(这是众所周知的缺乏细节)间歇性地发生在我呼叫的几乎任何服务上.
这就是事情.通过明智地设置断点,我已经能够确定服务端正常执行.正在检索和返回数据.这个问题似乎更多地出现在客户端.
这就是问题......如果我让服务执行超过10秒,我可以始终如一地发生异常.当我这样做时,它永远不会回到我完成的回调.相反,我在服务的客户端Reference.cs中获得异常:
public System.Collections.ObjectModel.ObservableCollection<Project.Ui.SilverLight.ServiceName.ModelName> EndGetService(System.IAsyncResult result) {
object[] _args = new object[0];
System.Collections.ObjectModel.ObservableCollection<roject.Ui.SilverLight.ServiceName.ModelName> _result = ((System.Collections.ObjectModel.ObservableCollection<roject.Ui.SilverLight.ServiceName.ModelName>)(base.EndInvoke("GetService", _args, result)));
return _result;
}
Run Code Online (Sandbox Code Playgroud)
我得到的例外是(不是很有帮助):
System.ServiceModel.CommunicationException was unhandled by user code
Message=The remote server returned an error: NotFound.
StackTrace:
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at Project.Ui.SilverLight.Service.ServicesClient.ServicesClientChannel.EndGetxxxxx(IAsyncResult result)
at Project.Ui.SilverLight.Service.ServicesClient.Project.Ui.SilverLight.Service.IServices.EndGetxxxx(IAsyncResult result)
at Project.Ui.SilverLight.Service.ServicesClient.OnEndGet(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
InnerException: System.Net.WebException
Message=The remote server returned an error: NotFound.
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)
InnerException: System.Net.WebException
Message=The remote server returned an error: NotFound.
StackTrace:
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
InnerException:
Run Code Online (Sandbox Code Playgroud)
绑定信息(名称已更改,但它们与正在执行的服务匹配)
<binding name="Project.WebUI.Services.xxxxxServices.customBinding0" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00">
<binaryMessageEncoding/>
<httpTransport />
</binding>
...
<service name="Project.WebUI.Services.xxxxxServices">
<endpoint address="" binding="customBinding" bindingConfiguration="Project.WebUI.Services.xxxxxServices.customBinding0"
contract="Project.WebUI.Services.xxxxxServices" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
Run Code Online (Sandbox Code Playgroud)
我相信我已经检查了相关的超时.通道operationTimeout设置为至少一分钟,ReceiveTimeout和OpenTimeout也是如此.是否有一些关于Silverlight异步WCF调用的问题需要设置为告诉它超过十秒?
在上面的配置文件中,看起来它们来自服务器的配置。您是否也检查过客户端配置?客户端通道上的 SendTimeout 和 ReceiveTimeout 属性均默认为一分钟,但它们可能已被调整或覆盖。当然,您应该检查配置 XML 文件,还应该检查在代码中创建绑定的位置,因为可能在那里设置与配置文件冲突的属性。(在客户端和服务器上。)
| 归档时间: |
|
| 查看次数: |
8583 次 |
| 最近记录: |