Asp.net mvc 调试对WebAPI的未处理HTTP请求

Asp.net mvc 调试对WebAPI的未处理HTTP请求,asp.net-mvc,iis-7,asp.net-web-api,Asp.net Mvc,Iis 7,Asp.net Web Api,我正在从控制台客户端调用我的WebApi服务器方法,并且大多数调用都有效。 有些没有。 我的路由似乎很好,但显然存在错误。 是否有一种方法可以在某个地方设置断点(早于我的控制器方法),从而允许我跟踪错误的来源 要调用的控制器中必须有两个与路由引擎“相同”的方法。乙二醇 public class FooController { public void Get1() { } public void Get2() { } } 如果您试图调用somedomain.com/api/foo

我正在从控制台客户端调用我的WebApi服务器方法,并且大多数调用都有效。
有些没有。
我的路由似乎很好,但显然存在错误。

是否有一种方法可以在某个地方设置断点(早于我的控制器方法),从而允许我跟踪错误的来源

要调用的控制器中必须有两个与路由引擎“相同”的方法。乙二醇

public class FooController
{
    public void Get1() { }
    public void Get2() { }
}
如果您试图调用
somedomain.com/api/foo
,您将得到一个500服务器错误


找到多个与请求匹配的操作:\r\nSystem.Net.Http.HttpResponseMessage

请记住,在WebApi中(默认情况下),路由没有
{action}
部分:

{controller}/{id}

这意味着API有一个调用方法的约定


文章解释更多

如果您以另一种方式(直接)呼叫控制台应用程序中失败的呼叫是否有效?否。我收到http 500错误。发现多个操作与请求匹配。我认为您需要发布正在调用的URL和服务器端控制器类。(和您的路线配置)。这可能很简单,因为在一个控制器中有两个方法,而路由引擎不知道匹配哪一个,因为根据它,它们都是“相同的”。是的,有一种方法。您可以创建自定义的
DelegatingHandler
,并在其中使用路由。以下是示例:
public类UserAuthenticationHandler:DelegatingHandler{private const string logon\u route\u name=“logon”;受保护的覆盖任务SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken){//必须具有现有路由名称,否则调用失败bool logonRoute=(全局配置.Configuration.Routes[logon_route_name].GetRouteData(“,request)!=null);……