RequestInterceptor的ProcessRequest永远不会结束[WCF]

时间:2010-02-23 20:20:30

标签: c# wcf rest wcf-rest wcf-rest-starting-guide

所以,我正在使用Developer's Guide to the 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;
 }

我的电话卡在上下文。回复(回复);我不知道我做错了什么......任何抬头?

感谢

1 个答案:

答案 0 :(得分:2)

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

在仔细观察之后,我注意到我正在添加一个HttpRequestHeader而不是HttpResponseHeader ...我的坏:(

responseProp.Headers[HttpResponseHeader.ContentType] = "text/html";