1

因此,我正在使用WCF REST Starter Kit 开发人员指南,但 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

好吧,我的错......这是一个简单/愚蠢的问题。
首先发生了一个我没有看到的异常......一旦我添加了一个尝试捕获和跟踪,我发现我收到以下错误:“System.InvalidOperationException:此集合包含请求标头并且不能包含指定的响应头”。

仔细观察后,我注意到我添加了一个 HttpRequestHeader 而不是 HttpResponseHeader ......我的错:(

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