1

我有一个非常奇怪的问题:我正在开发一个带有 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 客户端)通过自定义表单身份验证进行身份验证。

我知道你可以说,就这样吧,但这让我发疯,我想知道问题出在哪里,所以我不会再遇到它。

谢谢!

再见,萨比

4

1 回答 1

0

我怀疑这是 URL 问题,大多数 URL 只能是几 kbs 长。现在我不知道大小,但在 RIA 服务中,它使用 URL 将您的过滤器作为查询字符串发送。

而且您的方法的名称也很大,它已达到 URL 的最大限制。当它使用大名称时,您的过滤器部分可能是空的,但如果您添加更多过滤器,您将面临错误。

于 2011-04-25T18:28:54.050 回答