Сервис WCF 4 REST не может возвратить StatusDescription, только StatusCode

Я в настоящее время перемещаю свой УСПОКОИТЕЛЬНЫЙ сервис WCF от.NET 3.5 (Стартовый набор) к.NET 4. Я запустил свой проект с помощью сервисного шаблона Отдыха WCF из Visual Studio 2010. Я должен был выяснить, как сохранить мою схему авторизации (formely сделанной с RequestInterceptor) использованием ServiceAuthorizationManager. После некоторой работы и исследования я сделал его. Но теперь у меня есть сопутствующая проблема. Мой сервис привык для обратной связи мой клиент любых ошибок обработки с помощью кода состояния HTTP и краткого описания. Я использовал WebOperationContext во многих точках моего сервисного метода, чтобы описать клиентам, что пошло не так, как надо, как это:

protected void returnCode(HttpStatusCode code, string description)
{
    WebOperationContext ctx = WebOperationContext.Current;
    ctx.OutgoingResponse.StatusDescription = description;
    ctx.OutgoingResponse.StatusCode = code;
}

Но в WCF 4, только работы StatusCode - тихо перестал работать StatusDescription. Я не могу выяснить почему. Мое единственное предположение - то, что WebOperationContext не работает в этом новом сценарии WCF 4, и я должен использовать OperationContext вместо этого, но который также не работает. Следующий метод используется в моем пользовательском расширении класса ServiceAuthorizationManager, сообщая клиентам, запрос не мог быть доступом, потому что подлинный обзор был уродлив:

private void GenerateBadDigestMessage(ref OperationContext operationContext)
{
    Message reply = Message.CreateMessage(MessageVersion.None, null, null, new DataContractJsonSerializer(typeof(object)));

    HttpResponseMessageProperty hrp = new HttpResponseMessageProperty();
    hrp.StatusCode = HttpStatusCode.Forbidden;
    hrp.StatusDescription = "bad digest";
    reply.Properties[HttpResponseMessageProperty.Name] = hrp;

    operationContext.RequestContext.Reply(reply);
    operationContext.RequestContext = null;
}

Даже при помощи OperationContext direclty здесь (insted WebOperationContext), StatusDescription не работает.

Что я пропускаю здесь? Почему такая мелочь может повредиться от.NET 3.5 к 4?

8
задан Fernando Piancastelli 5 August 2010 в 20:37
поделиться