HttpClient未将请求发送到Web Api异步get方法

时间:2019-01-03 05:07:24

标签: c# asp.net-web-api2

我已经有一段时间没有使用Web Api了,但我坚持使用应该很简单的方法。

我在Web Api控制器中有一个异步get方法:

public class SomeController : ApiController  
{  
   [HttpGet]  
   public async Task<IHttpActionResult> MyMethodAsync(Guid id)  
   {  
      //... doing something.
   }  
}

在我的客户端应用程序上,我试图这样称呼它:

using(var client = new HttpClient())
{
   var result = client.GetAsync($"{url}/Some/MyMethodAsync/{Guid.NewGuid()}"); 
   //I have tried making the above call with and without await
   //since I saw in some other post that it is not needed.

   //.... doing something else.

   //This POST method does stop in the beak point I set inside of it.
   var result2 = client.PostAsync($"{url}/Some/MyPostAsync", someContent);
}

我遇到的问题是,由于我在MyMethodAsync上设置的断点发出警告,提示您符号未加载,似乎请求甚至没有发送到Web Api。

真正令我困惑的是,下一次调用是在同一控制器上的POST方法,当我调用它时,符号加载及其断点会被命中。

就像我说的那样,经过很长时间之后,我将回到Web Api,很多事情在我的脑海中变得模糊。我只有默认路由,所以我不知道是否必须添加更多特定的路由,如果要添加,如何指定它们。

作为旁注,我还有另外两个GET方法,它们也带有Guid参数。我试过打电话给那些结果相同的人。

谢谢您的帮助。

更新使事情更加混乱。如果我运行该应用程序,但没有使用客户端,而是打开浏览器,并完全按照客户端的方式输入URL,则操作中的断点会被命中。紧接着,我尝试使用客户端,但随后不再使用。

1 个答案:

答案 0 :(得分:0)

1。打开App_Start / WebApiConfig.cs

enter image description here

2。添加新路线

config.Routes.MapHttpRoute(
    name: "NewRoute",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

2.1。完整代码

enter image description here

3。 USE动作名称属性[ActionName(“ MyMethod1”)]

    [ActionName("MyMethod1")]
    [HttpGet]
    public IHttpActionResult MyMethod1(Guid id)
    {
        return Ok<string>($" ok MyMethod1 and id= {id}");

    }

4。与MyMethod2相同

    [ActionName("MyMethod2")]
    [HttpGet]
    public IHttpActionResult MyMethod2(Guid id)
    {
        return Ok<string>($" ok MyMethod2 and id= {id}");

    }

额外注意:由于在Visual Studio中没有删除符号错误

  • 关闭Visual Studio
  • 删除WebApplication1 \ bin
  • 删除WebApplication1 \ obj
  • 打开Visual Studio
  • 构建解决方案
    enter image description here