传输byte []时WCF数据服务中的异常

时间:2011-07-29 07:52:59

标签: c# wcf wcf-data-services wcf-faults

我正在测试我设置的最近的WCF数据服务。

大多数事情都很好,只有一个集合,当我添加一个对象并保存更改时,我遇到了这个例外:

  System.Data.Services.Client.DataServiceRequestException was unhandled
  Message=Une erreur s'est produite lors du traitement de cette requête.
  Source=System.Data.Services.Client
  StackTrace:
       à System.Data.Services.Client.DataServiceContext.SaveResult.HandleBatchResponse()
       à System.Data.Services.Client.DataServiceContext.SaveResult.EndRequest()
       à System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options)
       à System.Data.Services.Client.DataServiceContext.SaveChanges()
       à WSTester.Program.AddSomeThings(Entities entities) dans D:\MyPath\MAIN\WSTester\Program.cs:ligne 153
       à WSTester.Program.Main(String[] args) dans D:\MyPath\MAIN\WSTester\Program.cs:ligne 26
       à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       à System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Data.Services.Client.DataServiceClientException
       Message=BadRequest
       Source=System.Data.Services.Client
       StatusCode=400
       StackTrace:
            à System.Data.Services.Client.DataServiceContext.SaveResult.<HandleBatchResponse>d__1e.MoveNext()
       InnerException: 

它是唯一包含文件(byte [])的对象,所以我认为问题是因为这个文件(大小?...?),即使我已经错误也不会告诉我很多激活详细错误:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]

我拥有此系列的所有权利:

    config.SetEntitySetAccessRule("OrderFile", EntitySetRights.All);

以下是我添加文件的方式:

OrderFile orderFile = new OrderFile() { BinaryFile = StreamFile("BC0201001.pdf"), DateAdded = DateTime.Now, FileName = "BC0201001.pdf", IDOrder = order.IDOrder};
entities.AddToOrderFile(orderFile);
entities.SaveChanges();

//and this the method which put a file into a byte[]
        private static byte[] StreamFile(string filename)
        {
            FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);

            // Create a byte array of file stream length
            byte[] ImageData = new byte[fs.Length];

            //Read block of bytes from stream into the byte array
            fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));

            //Close the File Stream
            fs.Close();
            return ImageData; //return the byte data
        }

我尝试添加

<httpRuntime maxRequestLength="2097152"/>

到我的元素

如果我发送一个空的txt文件,它就可以了。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)