2012-11-28 28 views
0

我正在使用SL 5和WCF DS 5.我打電話給一個服務POST操作,其中一個字符串作爲輸入發送,基本上是文本文件的內容。看來當字符串是小,它的工作原理,但是當它是圍繞1.4kb的(文本文件的大小),這個錯誤被拋出:錯誤發佈1.4KB從Silverlight到WCF數據服務的字符串

{System.InvalidOperationException: An error occurred while processing this request. ---> System.Exception: Error HRESULT E_FAIL has been returned from a call to a COM component. 

在System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult的asyncResult) 在System.Data.Services.Http.ClientHttpWebRequest.EndGetResponse(IAsyncResult的asyncResult) 在System.Data.Services.Client.HttpWebRequestMessage.EndGetResponse(IAsyncResult的asyncResult) 在System.Data.Services.Client.HttpTransportLayer.EndGetResponse( IODataRequestMessage requestMessage,IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceContext.GetResponseHelper(ODataRequestMessageWrapper request,IAsyncResult asyncResult,Boolean handleWebException) at System.Data.Services.Client.QueryResult.AsyncEndGetResponse(IAsyncResult asyncResult) --- End of internal exception stack trace --- at System.Data.Services.Client.BaseAsyncResult.EndExecute [T](Object源,String方法,IAsyncResult asyncResult) at System.Data.Services.Client.QueryResult.EndExecuteQuery [TElement](Object source,String method,IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceRequest.EndExecute [TElement] (對象源,DataServiceContext上下文中,字符串方法,IAsyncResult的asyncResult) 在System.Data.Services.Client.DataServiceContext.EndExecute [TElement](IAsyncResult的asyncResult)

我請從WPF應用程序編輯相同的操作,並且它工作正常。我也這樣做了WCF DS主機上:

WebHttpBinding binding = new WebHttpBinding(); 
     binding.MaxReceivedMessageSize = int.MaxValue; 
     binding.MaxBufferPoolSize = int.MaxValue; 
     binding.MaxBufferSize = int.MaxValue; 
     binding.ReaderQuotas.MaxStringContentLength = int.MaxValue; 

下面是來自SL客戶端調用:

CodeFirstContainer context; 

     context = new CodeFirstContainer(new Uri("http://localhost:4444/MyDataService/")); 

     OperationParameter p = new UriOperationParameter("fileIDN", fileIDN); 
     OperationParameter p1 = new UriOperationParameter("**fileContent**", responseContent); 

     context.BeginExecute<int> 
      (new Uri(context.BaseUri.OriginalString + "ProcessTextFile"), 
       (r) => 
       { 
        Deployment.Current.Dispatcher.BeginInvoke(() => 
        { 
         try 
         { 
          context = r.AsyncState as CodeFirstContainer; 

          // Get the response of the query. 
          var response = context.EndExecute<int>(r).ToList(); 
         } 
         catch (Exception ex) 
         { 
         } 
        } 
        ); 
       }, 
       context, "POST", true, new OperationParameter[] { p, p1 } 
      ); 

回答