2017-07-11 31 views
0

私が設定したルーティング:私はGetUserDetailsアクションを呼び出すしようとすると"メッセージ": "要求されたリソースは、httpメソッド 'GET'をサポートしていません。このようなエラー

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()); 
     } 
    } 

:私もSalesControllerを持って

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;   
    } 
} 

:ここ

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" } 
); 

は私UserControllerでありますこのURLで:

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

それは、このエラーがスローされます。

"Message":"The requested resource does not support http method"

しかしSalesControllerでPOSTメソッドが働いています。

答えて

2

あなたのルートテンプレートは見えません。

ルートテンプレートを変更して、コントローラ名が本質的にハードコードされ、そのアクションがプレースホルダであるようにしました。この場合、アクションは省略することができますが、GetDetailsにデフォルト設定されています。

+0

私の変更についての説明も少し追加しましたが、私の答えは受け入れられるとマークできますか? – juunas

関連する問題