【问题标题】:"Message":"The requested resource does not support http method 'GET'." error"Message":"请求的资源不支持 http 方法 'GET'。"错误
【发布时间】:2017-12-15 01:35:56
【问题描述】:

我已经这样配置路由:

config.Routes.MapHttpRoute(
   name: "Sales",
   routeTemplate: "api/{Sales}/{jsonresponce}",
   defaults: new { controller = "Sales", action = "Postsomething" }
);

config.Routes.MapHttpRoute(
   name: "User",
   routeTemplate: "api/{User}/{GetDetails}",
   defaults: new { controller = "User", action = "GetDetails" }
);

这是我的用户控制器:

public class UserController : ApiController
{
    userservice objservice = new userservice();       

   [HttpGet]
   public CustDetails GetDetails(string Username, string Password, string BillingFeedID)
    {
        CustDetails model = new CustDetails();
       //checking for encrypted password
        model.UserName = Username;
        model.Password = Password;
        model.BillingFeedID = BillingFeedID;
        model = objservice.Login(model);

        //taking merchant configuration data
        var data = objservice.Getcustomerconfig(model.MerchantID, BillingFeedID);
        model.LastPosBillID = data.LastPosBillID;
        model.LastTimeStamp = data.LastTimeStamp;
        model.SyncStatus = data.SyncStatus;
        model.SynsTimeInterval = data.SynsTimeInterval;
        model.DataSorce = data.DataSorce;
        model.DataAuthentication = data.DataAuthentication;
        model.DataBaseQuery = data.DataBaseQuery;
        return model;        
    }
}

我还有一个 SalesController:

public class SalesController : ApiController
{

  [HttpPost]
  public async Task<HttpResponseMessage> PostSomething()
  {
      StringBuilder sb = new StringBuilder();
      try
      {
          string jsonData = await Request.Content.ReadAsStringAsync();
          // dynamic dataList = JArray.Parse(jsonData);             
          if (File.Exists(@"C:\MCarrots\Umairbills\Umairbills.json"))
              File.Delete(@"C:\MCarrots\Umairbills\Umairbills.json");
          File.Create(@"C:\MCarrots\Umairbills\Umairbills.json").Close();
          File.WriteAllText(@"C:\MCarrots\Umairbills\Umairbills.json", jsonData);           
          return Request.CreateResponse(HttpStatusCode.OK, "OK");
      }
      catch (Exception ex)
      {
          File.WriteAllText(@"C:\MCarrots\mcarrots\Umairbills.json", ex.ToString());
          return Request.CreateResponse(HttpStatusCode.NoContent, ex.ToString());
      }
  }

当我尝试使用此 url 调用 GetUserDetails 操作时:

http://localhost:42945/api/User/GetDetails?Username=kay001&Password=kay501&BillingFeedID=KF1

它正在抛出这个错误:

"Message":"请求的资源不支持http方式"

但 SalesController 中的 POST 方法是有效的。

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    您的路线模板似乎已关闭。我认为他们应该是:

        config.Routes.MapHttpRoute(
           name: "Sales",
           routeTemplate: "api/Sales/{action}",
           defaults: new { controller = "Sales", action = "Postsomething" }
        );
    
        config.Routes.MapHttpRoute(
              name: "User",
              routeTemplate: "api/User/{action}",
              defaults: new { controller = "User", action = "GetDetails" }
           );
    

    我更改了路由模板,以便控制器名称本质上是硬编码的,并且操作是占位符。不过在这种情况下可以省略该操作,默认为 GetDetails。

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2014-01-28
      • 1970-01-01
      • 2014-12-16
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 2017-10-17
      相关资源
      最近更新 更多