我有一个非常奇怪的问题:我正在开发一个带有 RIA 服务的 Silverlight 业务应用程序。
我在服务器端有一些 DomainServices,其中一个我遇到了问题,有时调用其中一种方法会失败(在 SL 客户端上,我得到“NotFound”异常,并且请求没有事件到达服务器(我在 domainservice 的构造函数中放了一个断点)!
是什么让事情变得更加奇怪:
- 如果从 SL 客户端调用失败,那么我启动 Fiddler2,然后第二个(或任何连续的)调用正常工作!如果我关闭提琴手,它会再次变得不稳定。
- 如果我重命名我想调用的方法(通过重构),也可以在 SL 客户端的上下文中调用重命名的方法,那么每次调用都会成功!
这是我的怀疑方法:
[Invoke]
public void RegisterTrainingProgramCompletion(bool isCompleted, int result, string sportsManNote)
{
//...
}
如果我将此方法重命名为“RegisterTpCompletion”,那么它可以工作(难以置信)!
DomainService 标有一些属性:
[EnableClientAccess()]
[RequiresAuthentication()]
public class NextTrainingProgramDomainService : DomainService
我设法以某种方式记录服务器端,并从 WCF 堆栈中得到以下异常:
从网络接收的 XML 存在问题。有关更多详细信息,请参阅内部异常。在 System.ServiceModel.Channels.HttpInput.DecodeBufferedMessage(ArraySegment`1 缓冲区,流 inputStream) 在 System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream) 在 System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& requestException) 在 System .ServiceModel.Channels.HttpChannelListener.HttpContextReceived(HttpRequestContext context, Action callback) at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result) 在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() 在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult。在 System.ServiceModel.Activation 开始请求()。
那么由于某种未知原因,clint(SL-app)没有正确刷新请求?我开始担心了:(((
我的调用者(SL 客户端)通过自定义表单身份验证进行身份验证。
我知道你可以说,就这样吧,但这让我发疯,我想知道问题出在哪里,所以我不会再遇到它。
谢谢!
再见,萨比