Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 邮政编码不';t调用预期的方法_C#_Asp.net Web Api_Asp.net Web Api Routing - Fatal编程技术网

C# 邮政编码不';t调用预期的方法

C# 邮政编码不';t调用预期的方法,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,我正在使用两个或更多Post方法处理ASP.NETWebAPI。我试图通过HttpClient使用api控制器中的一个Post方法,但每次调用第一个Post方法时。 下面是代码 public class JobController : ApiController { [HttpPost] public HttpResponseMessage RunJob([FromBody]UserModel User) { } [HttpPost] public Ht

我正在使用两个或更多Post方法处理ASP.NETWebAPI。我试图通过HttpClient使用api控制器中的一个Post方法,但每次调用第一个Post方法时。 下面是代码

public class JobController : ApiController
{
    [HttpPost]
    public HttpResponseMessage RunJob([FromBody]UserModel User)
    {
    }

[HttpPost]
    public HttpResponseMessage DownloadFile(string ExportStatusGuid, string PartnerGuid, string UserEmail, string Password)
    {
    }
}
我正试图通过HTTP客户端使用它:

using (var client = new HttpClient())
        {
            var arguments = new { ExportStatusGuid, PartnerGuid };
            HttpContent content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(arguments), Encoding.UTF8, "application/json");

            var responseTask = client.PostAsync(ApiUrl + "Job/DownloadFile", content);
            responseTask.Wait();

            if (responseTask.Result.IsSuccessStatusCode)
            {


            }
        }
您可以看到我已经从JobController调用了DownloadFile

var responseTask = client.PostAsync(ApiUrl + "Job/DownloadFile", content);
但它不调用Job/DownloadFile,而是运行Job/RunJob方法。我无法解决这个问题,即使我尝试添加路由配置

默认路由配置在这里

public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
有关此问题,请帮助我。

更改路线配置

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

这与HttpClient无关。控制器将
RunJob
公开为默认的post操作,因为它是唯一具有
[HttpPost]
属性的方法
DownloadFile
只是将PostAsync更改为的一种方法GetAsync@Shiljo问题是如何发布,而不是如何获取。在任何情况下,此控制器中都没有GET操作如果要将
DownloadFile
转换为一个操作,请将
HttpPost
属性添加到itSorry,复制代码时,我错过了HttpPost,在应用程序中,两种方法上都有HttpPost属性。我已经更新了question@azharrahi您需要在路由中添加操作名称