WCF批处理响应未正确形成

时间:2012-02-10 23:24:52

标签: wcf-data-services odata

我正在使用WCF数据服务的处理管道在处理变更集之前做一些消息通知设置。我正在使用批处理模式提交我的更改。我正在测试通知服务未运行的情况,因此我们会在更改集处理之前抛出特定的消息。

以下是我的代码设置方式

ProcessingPipeline.ProcessingChangeset += ProcessingChangeset;

您可以轻松模仿我的错误,如下所示:

private void ProcessingChangeset(object sender, EventArgs e)
{
    throw new Exception("Some Specific Messsage");
}

当我运行测试时,我没有得到我期望的“Some Specific Message”异常。相反,我收到:

  

System.Data.Services.Client.DataServiceRequestException:错误   处理此请求时发生。 --->   System.InvalidOperationException:缺少更改集边界   分隔符。请确保更改集边界定界符   指定用于标记更改集的结尾。

我使用Fiddler检查测试响应以查看内容。

--batchresponse_f158ae30-03c4-479e-8dda-a9129d2a1036
Content-Type: multipart/mixed; boundary=changesetresponse_92c24e82-47ad-43a2-b3e2-79d9e5ada261

--batchresponse_f158ae30-03c4-479e-8dda-a9129d2a1036
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 500 Internal Server Error
DataServiceVersion: 1.0;
Content-Type: application/xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">An error occurred while processing this request.</message>
  <innererror>
    <message>Some Specific Message</message>
    <type>System.Exception</type>
    <stacktrace>   at SM.Service.BaseService`1.ProcessingChangeset(Object sender, EventArgs e) in C:\svn\gr-core\ServiceManager\trunk\SM.Service\BaseService.cs:line 71&#xD;
   at System.Data.Services.DataServiceProcessingPipeline.InvokeProcessingChangeset(Object sender, EventArgs e)&#xD;
   at System.Data.Services.DataService`1.BatchDataService.HandleBatchContent(Stream responseStream)</stacktrace>
  </innererror>
</error>
--changesetresponse_92c24e82-47ad-43a2-b3e2-79d9e5ada261
Content-Type: application/http
Content-Transfer-Encoding: binary

HTTP/1.1 204 No Content
Content-ID: 2
Cache-Control: no-cache
DataServiceVersion: 1.0;


--changesetresponse_92c24e82-47ad-43a2-b3e2-79d9e5ada261--
--batchresponse_f158ae30-03c4-479e-8dda-a9129d2a1036--

看起来重复的batchresponse条目可能是问题。有没有人遇到这个或找到了解决方法,以便可以返回相应的消息?

我们在变更集处理(而不是之前)中有错误的其他功能测试都会返回预期的消息。

1 个答案:

答案 0 :(得分:2)

这确实看起来像一个错误。我检查了我们最近的构建,行为肯定更好(没有重复的边界,但据我所知,正确的错误响应)。 您可以尝试最新的CTP,可能会在此处修复此问题:http://blogs.msdn.com/b/astoriateam/archive/2011/10/13/announcing-wcf-data-services-oct-2011-ctp-for-net-4-and-silverlight-4.aspx