我有一个非常奇怪的问题:我正在使用RIA服务开发Silverlight业务应用程序。
我在服务器端有一些DomainServices,其中一个我遇到了问题,有时调用其中一个方法失败(在SL客户端上,我得到了“NotFound”) “异常,并且请求没有事件到达服务器(我将断点放入域服务的构造函数中)!
更让人感到奇怪的是:
这是我怀疑的方法:
[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 buffer,Stream inputStream) 在System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream) 在System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(Exception& amp; requestException) 在System.ServiceModel.Channels.HttpChannelListener.HttpContextReceived(HttpRequestContext context,Action callback) 在System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult结果) 在System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() 在System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state) 在System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke(ContextCallback回调,对象状态) at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequestWithFlow(Object state) 在System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode,UInt32 numBytes,NativeOverlapped * nativeOverlapped) 在System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32错误,UInt32 bytesRead,NativeOverlapped * nativeOverlapped) 在System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode,UInt32 numBytes,NativeOverlapped * pOVERLAP)
因为某些未知原因,clint(SL-app)没有正确刷新请求?我开始担心:((
我的呼叫者(SL客户端)使用自定义表单身份验证进行身份验证。
我知道你可以说,然后保持现状,但这让我发疯,我想知道问题是什么,所以我不会再遇到它。
谢谢!
再见 Csabi
答案 0 :(得分:0)
我怀疑它是URL问题,大多数URL只能是几kbs长。现在我不知道大小,但在RIA服务中,它使用URL将您的过滤器作为查询字符串发送。
您的方法名称也很大,达到了URL的最大限制。当它使用大名称工作时,您的过滤器部分可能是空的,但如果添加更多过滤器,您将面临错误。