5

我有一个带有以下控制器的 WebApi 应用程序:

public class ContentController : ApiController
{
    [HttpPost]
    public HttpResponseMessage Post(string contentType)
    {
        //do stuff
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
}

路线看起来像这样

routes.MapHttpRoute("content", 
    "api/content/{contentType}", 
    new { controller = "Content", contentType = RouteParameter.Optional });

当我在 IIS / cassini 中托管服务时,如果我api/content/whatever按预期 POST 到 then ,我的控制器操作就会被命中。

然而,

我有一个测试项目,SelfHosts 这个 api

using (var client = new HttpClient(Server))
{
    var result = client.PostAsync(BaseAddress + "api/content/whatever"

    var message = result.Content.ReadAsStringAsync().Result;
}

如果我调试单元测试并进入它,result是:

{StatusCode:500,ReasonPhrase:'内部服务器错误',版本:1.1,内容:System.Net.Http.ObjectContent`1 [[System.Web.Http.HttpError,System.Web.Http,版本= 5.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35]],标题:{ 内容类型:应用程序/json;字符集=utf-8 }}

无济于事,message实际上只是

发生了错误

有没有办法可以调试我的自托管 WebApi 以找出导致此错误的原因?

设置

Server只是HttpServer一个基类,它包含我的自托管服务器,像这样新建:

var httpConfig = new HttpSelfHostConfiguration(BaseAddress);

new ApiServiceConfiguration(httpConfig).Configure();

var server = new HttpSelfHostServer(httpConfig);
server.OpenAsync().Wait();
Server = server;
4

2 回答 2

2

如果您启用跟踪并添加一个,Trace.Listeners.Add(new ConsoleTraceListener())那么您将获得更详细的错误消息。但是,您的问题很可能与您尝试序列化的对象未能序列化有关。

于 2013-11-06T12:19:03.113 回答
2

添加到启动

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

类型在哪里configHttpConfiguration

这行代码为我解决了同样的问题——现在我可以看到所有内部异常的详细信息。

于 2015-09-24T07:21:00.503 回答