1

そのため、WCF RESTスターターキットの開発者ガイドを使用していて、RequestInterceptorに問題があります。ガイドが示している正確なコードがありますが、何らかの理由でメソッドが終了することはありません。

これは私のコードです:

public override void ProcessRequest(ref RequestContext requestContext)
{
   GenerateErrorResponse(requestContext, HttpStatusCode.Forbidden, "shit happens!");
}

public void GenerateErrorResponse(RequestContext context, HttpStatusCode statusCode, string errorMessage)
{
   XElement response = XElement.Load(new StringReader(string.Format(ERROR_HTML, errorMessage)));

   Message reply = Message.CreateMessage(MessageVersion.None, "action", response);
   HttpResponseMessageProperty responseProp = new HttpResponseMessageProperty()
   {
      StatusCode = statusCode,
      //StatusDescription = errorMessage
   };
   responseProp.Headers[HttpRequestHeader.ContentType] = "text/html";
   reply.Properties[HttpResponseMessageProperty.Name] = responseProp;
   context.Reply(reply);

   context = null;
 }

私の呼び出しはcontext.Reply(reply);でスタックします。何が間違っているのかわかりません...何か注意が必要ですか?

ありがとう

4

1 に答える 1

3

わかりました、私の悪い...それは単純な/愚かな問題でした。
まず、表示されていない例外が発生しました... try catchとトレースを追加すると、次のエラーが発生することがわかりました: "System.InvalidOperationException:このコレクションはリクエストヘッダーを保持しており、指定されたレスポンスを含めることができませんヘッダ"。

もう少し詳しく見てみると、HttpResponseHeaderの代わりにHttpRequestHeaderを追加していることに気づきました...私の悪い:(

responseProp.Headers[HttpResponseHeader.ContentType] = "text/html";
于 2010-02-24T21:27:56.770 に答える