我有一个Silverlight应用程序,它在我的asp.net应用程序中使用WCF服务.silverlight应用程序以墨水笔划的形式保存“图纸”.这些笔划是xaml(可能有点大)的形式,我将其转换为字符串并发送到服务以将字符串保存到sql server. (基本上与此应用程序
http://msdn.microsoft.com/en-us/magazine/cc721604.aspx相同类型的东西).
这有效,我可以看到我的服务方法在绘图相对较小时被击中,但如果绘图变大,我会得到这个很大的错误,并且服务方法断点永远不会被击中.似乎我正在通过一个大小阈值,但我无法弄清楚我是对的还是要改变什么来解决问题.
我已经搜索谷歌和SO没有成功,所以任何帮助将不胜感激.提前致谢.
我的服务:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class DrawingService: IDrawingService { #region IDrawingService Members public bool SaveEvalAreaDrawing(int EvalAreaId,string xmlToSave) { return true; } public bool SaveEvalItemDrawing(int EvalItemId,string xmlToSave) { return true; } public string GetEvalAreaDrawing(int EvalAreaId,string xmlToSave) { return "you got the eval drawing!"; } public string GetEvalItemDrawing(int EvalItemId,string xmlToSave) { return "you got the eval item drawing!"; } #endregion }
我的asp.net应用程序与服务web.config
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="MyNameSpace.Services.DrawingServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <bindings> <customBinding> <binding name="customBinding0"> <binaryMessageEncoding /> <httpTransport> <extendedProtectionPolicy policyEnforcement="Never" /> </httpTransport> </binding> </customBinding> <wsHttpBinding> <binding name="wsPlainBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="None"> <transport clientCredentialType="None"> <extendedProtectionPolicy policyEnforcement="Never" /> </transport> <message clientCredentialType="None" negotiateServiceCredential="false" establishSecurityContext="false" /> </security> </binding> </wsHttpBinding> </bindings> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service behaviorConfiguration="HSD.ECERS.Services.DrawingServiceBehavior" name="HSD.ECERS.Services.DrawingService"> <endpoint address="Services" binding="wsHttpBinding" bindingConfiguration="wsPlainBinding" name="wsPlainHttp" contract="HSD.ECERS.Services.IDrawingService" /> <endpoint address="mex" binding="mexHttpBinding" name="wsdl" contract="IMetadataExchange" /> </service> </services>
ServiceReferences.ClientConfig
<configuration> <system.serviceModel> <bindings> <customBinding> <binding name="wsPlainHttp"> <textMessageEncoding messageVersion="Default" writeEncoding="utf-8" /> <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"> <extendedProtectionPolicy policyEnforcement="Never" /> </httpTransport> </binding> </customBinding> </bindings> <client> <endpoint address="http://localhost:41594/Services/DrawingService.svc/Services" binding="customBinding" bindingConfiguration="wsPlainHttp" contract="EvalDrawingService.IDrawingService" name="wsPlainHttp" /> </client> </system.serviceModel> </configuration>
public bool EndSaveEvalAreaDrawing(System.IAsyncResult result) { object[] _args = new object[0]; bool _result = ((bool)(base.EndInvoke("SaveEvalAreaDrawing",_args,result))); // Here is where is popping up return _result; }
例外
{System.ServiceModel.CommunicationException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. 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__DisplayClass4.<BeginOnUI>b__1(Object sendState) --- End of inner exception stack trace --- 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) --- End of inner exception stack trace --- 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 EvaluaionAncillaryControl.EvalDrawingService.DrawingServiceClient.DrawingServiceClientChannel.EndSaveEvalAreaDrawing(IAsyncResult result) at EvaluaionAncillaryControl.EvalDrawingService.DrawingServiceClient.EvaluaionAncillaryControl.EvalDrawingService.IDrawingService.EndSaveEvalAreaDrawing(IAsyncResult result) at EvaluaionAncillaryControl.EvalDrawingService.DrawingServiceClient.OnEndSaveEvalAreaDrawing(IAsyncResult result) at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)}