2012-02-10 15 views
1

我正在使用WCF數據服務的處理管道在處理更改集之前執行一些消息通知設置。我正在使用批處理模式提交我的更改。我正在測試通知服務未運行的情況,因此我們在更改集處理之前發出特定消息。WCF批處理響應未正確形成

這裏是我的代碼是如何設置

ProcessingPipeline.ProcessingChangeset += ProcessingChangeset; 

您可以輕鬆地模仿我的錯誤如下:

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

當我運行我的測試,我沒有得到「一些特定郵件」我期望的例外。相反,我收到:

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條目可能是問題。有沒有人遇到過這個問題或者找到了解決辦法,這樣可以返回相應的消息?

我們在變更集處理中有錯誤的其他功能測試(不是以前的)都會返回預期的消息。

回答