我有一个WCF Restful服务,我想返回HttpResponseMessage的方法,因为它看起来是结构化的,而不是仅仅返回数据或异常或任何其他可能返回到那里的方式。

我假设这是正确的,如果没有让我知道,但是我的问题是当我尝试设置HttpResponseMessage.Content时会发生什么。执行此操作时,我在其中进行了RESTful调用请求身份验证的客户端。

这是我的代码:

在界面中:

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

在类里:
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;
}

我想尝试使用Request.CreateResponse,但似乎无法从WCF Restful方法访问Request。 OperationContext.Current.RequestContext没有CreateResponse。

有指针吗?

最佳答案

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



问题是HttpResponseMessage是可抛弃的,并不意味着要序列化,而StringContent根本无法序列化。

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

10-04 22:42