অনুরোধ করা সংস্থানটি HTTP পদ্ধতি 'GET' সমর্থন করে না


102

আমার রুটটি সঠিকভাবে কনফিগার করা হয়েছে, এবং আমার পদ্ধতিগুলিতে সজ্জিত ট্যাগ রয়েছে। আমি এখনও পেয়েছি "অনুরোধ করা সংস্থানটি এইচটিটিপি পদ্ধতি 'জিইটি'" বার্তাটি সমর্থন করে না?

[System.Web.Mvc.AcceptVerbs("GET", "POST")]
[System.Web.Mvc.HttpGet]
public string Auth(string username, string password)
{
  // Décoder les paramètres reçue.
  string decodedUsername = username.DecodeFromBase64();
  string decodedPassword = password.DecodeFromBase64();

  return "value";
}

আমার রুটগুলি এখানে:

config.Routes.MapHttpRoute(
    name: "AuthentificateRoute",
    routeTemplate: "api/game/authentificate;{username};{password}",
    defaults: new { controller = "Game",
                    action = "Auth", 
                    username = RouteParameter.Optional, 
                    password = RouteParameter.Optional },
    constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);

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

উত্তর:


226

সিস্টেম থেকে বৈশিষ্ট্যগুলি ব্যবহার করুন। ওয়েব। Http আপনার WebAPI কর্মের উপর নামস্থান:

    [System.Web.Http.AcceptVerbs("GET", "POST")]
    [System.Web.Http.HttpGet]
    public string Auth(string username, string password)
    {...}

এটি কাজ না করার কারণ হ'ল আপনি এমভিসি নেমস্পেসের বৈশিষ্ট্যগুলি ব্যবহার করছেন System.Web.MvcSystem.Web.Httpনেমস্পেসের ক্লাসগুলি ওয়েবএপিআইয়ের জন্য ।


11
ধিক্কার .. ধন্যবাদ! আমি কীভাবে ক্ষুদ্র ও অবিশ্বাস্য হয়ে
উঠছিলাম

1
আসলে, কেন এটি সঠিক উত্তর এটির একটি ব্যাখ্যা অবশ্যই এখানে প্রয়োজনীয়!
জ্যাক্সিডিয়ান

6
ব্যাখ্যা সহ উত্তর সম্পাদিত Ed
ম্যাগি ইং

2
আমি রুটকনফিগ.সি-তে [সিস্টেম.Web.Http.AcceptVerbs ("GET", "পোষ্ট")] এবং [System.Web.Http.HttpGet] নির্দিষ্ট করতে পারি যাতে প্রতিটি এপিআইতে আমার এটি যুক্ত করার দরকার নেই।
গিরিশ গুপ্ত

8
এই প্রকল্পের জন্য আমার দশটি এপিআইয়ের মধ্যে একটিতে কেন এটি করার দরকার ছিল? আমি এপিআইটি ঠিক অন্যান্য 9 এপিসির মতো তৈরি করেছি। কত হতাশার।
ড্যান

3

কেবল এই বৈশিষ্ট্যটি ব্যবহার করুন

[System.Web.Http.HttpGet]

এই লাইন কোডের দরকার নেই:

[System.Web.Http.AcceptVerbs("GET", "POST")]

3

আমার ক্ষেত্রে, রুট স্বাক্ষরটি পদ্ধতি প্যারামিটার থেকে আলাদা ছিল। আমার আইডি ছিল, তবে আমি পরামিতি হিসাবে ডকুমেন্টটি গ্রহণ করছিলাম, যা সমস্যার কারণ হয়েছিল।

[Route("Documents/{id}")]   <--- caused the webapi error
[Route("Documents/{documentId}")] <-- solved
public Document Get(string documentId)
{
  ..
}

আপনাকে আশীর্বাদ করুন :) +1
শাই কোহেন

2

আমি একই সমস্যাটি অনুভব করছিলাম .. আমার কাছে ইতিমধ্যে 4 টি নিয়ন্ত্রক ছিল এবং ঠিকঠাক কাজ করছে তবে আমি এটি যুক্ত করলে এটি ফিরে আসে "অনুরোধ করা সংস্থানটি এইচটিটিপি পদ্ধতি 'জিইটি' সমর্থন করে না"। আমি এখানে এবং কিছু অন্যান্য প্রাসঙ্গিক নিবন্ধগুলিতে সমস্ত কিছু চেষ্টা করেছিলাম তবে সমাধানের বিষয়ে উদাসীন ছিলাম, ড্যান বি যেমন উত্তরের জবাবে বলেছিলেন, ইতিমধ্যে আমি অন্যদের ভাল কাজ করেছি।

আমি কিছুক্ষণের জন্য দূরে চলে গেলাম, ফিরে এসেছি এবং ততক্ষণে বুঝতে পারলাম যে আমি যখন কন্ট্রোলার যুক্ত করেছি তখন এটি "কন্ট্রোলার" শ্রেণীর অধীনে বাসা বাঁধে এবং আমার অন্যান্য নিয়ন্ত্রকেরা যে "এপিআইকন্ট্রোলার" শ্রেণীর অধীনে ছিল তা নয়। আমি ধরে নিচ্ছি আমি ভিজ্যুয়াল স্টুডিওতে .cs ফাইলটি তৈরি করার জন্য ভুল ভাসা বিকল্পটি বেছে নিয়েছি। সুতরাং আমি সিস্টেম.ওয়েব.এইচটিটিপি নেমস্পেস অন্তর্ভুক্ত করেছি, প্যারেন্ট ক্লাস পরিবর্তন করেছি এবং সমস্ত কিছু অতিরিক্ত বৈশিষ্ট্য বা রাউটিং ছাড়াই কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.