WCF Restful返回HttpResponseMessage想要在设置内容时进行协商

Mat*_*att 11 c# asp.net rest wcf web-services

我有一个WCF Restful服务,我希望这些方法返回HttpResponseMessage,因为它似乎是结构化的,而不仅仅是返回数据或异常或其他任何可能的方式.

我假设这是正确的,如果不让我知道,但我的问题是当我尝试设置时会发生什么HttpResponseMessage.Content.当我这样做时,我在其中进行RESTful呼叫请求身份验证的客户端.

这是我的代码:

在界面中:

[WebGet(UriTemplate = "/GetDetailsForName?name={name}"
                    , ResponseFormat = WebMessageFormat.Json)]
HttpResponseMessage GetDetailsForName(string name);
Run Code Online (Sandbox Code Playgroud)

在课堂里:

public HttpResponseMessage GetDetailsForName(string name)
{
   HttpResponseMessage hrm = new HttpResponseMessage(HttpStatusCode.OK)
       {
       //If I leave this line out, I get the response, albeit empty  
       Content = new StringContent("Hi") 
       };

   return hrm;
}
Run Code Online (Sandbox Code Playgroud)

我想尝试使用,Request.CreateResponse但我似乎无法从我的WCF Restful方法获取请求.OperationContext.Current.RequestContext没有CreateResponse.

有什么指针吗?

Rom*_*nev 2

不幸的是,这行不通。演示的代码说:

构造一个HttpResponseMessage对象,使用 JSON 序列化程序对其进行序列化,然后通过线路传递结果。

问题是HttpResponseMessage一次性的,不应该序列化,而且StringContent根本不能序列化。

至于为什么您被重定向到身份验证表单 - 该服务在无法序列化时会抛出异常StringContent 并返回 400 HTTP 状态代码,该状态代码被解释为身份验证问题。