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
at System.Data.Services.DataServiceProcessingPipeline.InvokeProcessingChangeset(Object sender, EventArgs e)
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エントリが問題のようです。誰かがこれに遭遇したか、または適切なメッセージが返されるように回避策を見つけましたか?
変更セット処理(以前ではない)にエラーがある他の機能テストでは、すべて予期されるメッセージが返されます。