WepAPI方法抛出MethodNotAllowed,但我不知道为什么

时间:2016-01-06 13:54:31

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

我认为答案很简单,但我有一个方法抛出405不允许的错误,我不知道为什么。在我进入细节之前,我会指出一些似乎是线索的东西 - 实际工作的方法实际上称为Get - 而且我不确定是否在幕后完成了一些导致其工作的HTTP方法映射。 / p>

我有一个控制器,里面有多种方法。到目前为止,我正在测试其中的两个,第一个工作正常,但第二个是抛出错误。

我的控制器是OOB设置,我的逻辑和模型是在单独的项目中。调用以下方法并正确返回:

[Route("api/GetFastPlan/{key}/{clientID}/{fastPlanID}")]
public RequestFastPlanResult Get(string key, string clientID, int fastPlanID)
{
    return new FastPlanFileShare().RequestFastPlan(key, clientID, fastPlanID);
}

然而,这种方法正在抛出405.

[Route("api/UpdateDownloads/{key}/{clientID}/{fastPlanID}")]
public UpdateDownloadsResult UpdateDownloads(string key
   , string clientID, int fastPlanID)
{
     return new FastPlanFileShare().UpdateNumberOfDownloadsColumnFastPlan(key
    , clientID, fastPlanID);
}

我使用相同的代码设置调用它们,这是在我的测试项目中:

using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri("http://localhost:8129/api/UpdateDownloads/value1/value2/1082");

    HttpResponseMessage response = httpClient.GetAsync("http://localhost:8129/api/UpdateDownloads/value1/value2/1082").Result;

     Assert.IsTrue(response.IsSuccessStatusCode);

     if (response.IsSuccessStatusCode)
     {
        var rp = response.Content.ReadAsAsync<ServiceReference2.RequestFastPlanResult>();

        Assert.IsTrue(rp.Result.ServiceResult.WasSuccessful);
     }
}

完整错误:

  

{StatusCode:405,ReasonPhrase:'Method Not Allowed',版本:1.1,   内容:System.Net.Http.StreamContent,Headers:{Pragma:no-cache   X-SourceFiles:   =?UTF-8 2 B 4 RDpcUHJvamVjdHNcTkVUMjAxK1xFeWVNRCBFTVIgSW50ZXJuYWwgV2Vic2VydmljZXNcRU1SU2VydmljZXMuV2ViQVBJXGFwaVxVcGRhdGVEb3dubG9hZHNcZXllbWRlbXIjMVxFWUU5ODQ1NFwxMDgy?=   缓存控制:无缓存日期:2016年1月6日星期三格林尼治标准时间13:50:43   服务器:Microsoft-IIS / 10.0 X-AspNet-版本:4.0.30319
  X-Powered-By:ASP.NET Content-Length:72允许:POST
  Content-Type:application / json; charset = utf-8到期:-1}}

0 个答案:

没有答案