2012-02-10 10 views
1

WCFデータサービスの処理パイプラインを使用していますが、変更セットを処理する前にメッセージ通知設定を行っています。バッチモードを使用して変更を送信しています。私は、通知サービスが実行されていないシナリオをテストしています。したがって、変更セット処理の前に特定のメッセージをスローします。私は私のテストを実行するとWCFバッチ応答が正しく形成されていません

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

は、私は「いくつかの特定のメッセージを」得ることはありません:

は、ここに私のコードは次のように

ProcessingPipeline.ProcessingChangeset += ProcessingChangeset; 

あなたは簡単に自分の誤りを模倣することができます設定されている方法です私が期待する例外。代わりに、私は受け取る:

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エントリが問題のようです。誰かがこれに遭遇したか、または適切なメッセージが返されるように回避策を見つけましたか?

変更セット処理(以前ではない)にエラーがある他の機能テストでは、すべて予期されるメッセージが返されます。

答えて

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

関連する問題