ProcessRequest от RequestInterceptor никогда не заканчивается [WCF] - PullRequest
0 голосов
/ 23 февраля 2010

Итак, я использую Руководство разработчика по начальному набору 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;
 }

Мой вызов застревает в контексте. Ответ (ответ); Я понятия не имею, что я делаю не так ... какие-нибудь головы?

спасибо

1 Ответ

2 голосов
/ 25 февраля 2010

Хорошо, плохо ... это была простая / глупая проблема.
Во-первых, произошло исключение, которого я не видел ... как только я добавил ловушку и трассировку, я обнаружил, что получаю следующую ошибку: "System.InvalidOperationException: эта коллекция содержит заголовки запроса и не может содержать указанный ответ заголовок».

Посмотрев немного поближе, я заметил, что я добавляю HttpRequestHeader вместо HttpResponseHeader ... мой плохой: (* ​​1004 *

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