2010-02-23 8 views
0

Итак, я использую Developer's Guide to the WCF REST Starter Kit и имею проблему с RequestInterceptor. У меня есть точный код, который показывает руководство, но по какой-то причине метод никогда не заканчивается.ProcessRequest из RequestInterceptor никогда не заканчивается [WCF]

Это мой код:

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 (ответ); Я понятия не имею, что я делаю неправильно ... все хедз-ап?

благодаря

ответ

2

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

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

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