C# 邮政编码不';t调用预期的方法
我正在使用两个或更多Post方法处理ASP.NETWebAPI。我试图通过HttpClient使用api控制器中的一个Post方法,但每次调用第一个Post方法时。 下面是代码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
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您需要在路由中添加操作名称