"PUT" পদ্ধতির জন্য IIS7.5 এ "405 পদ্ধতি অনুমোদিত নয়"


113

আমি WebClientআমার সার্ভারে * .cab ফাইলগুলি আপলোড করতে টাইপ ব্যবহার করি। সার্ভারের সাইডে, আমি নীচে নীচে PUT পদ্ধতিতে * .cab ফাইলের জন্য এইচটিটিপি হ্যান্ডলার নিবন্ধিত করেছি:

 <add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />

তবে আমি সর্বদা একটি "405 পদ্ধতি অনুমোদিত নয়" ত্রুটি পাই। প্রতিক্রিয়া জানায় যে অনুমোদিত পদ্ধতিগুলি নীচে রয়েছে:

Headers = {Allow: GET, HEAD, OPTIONS, TRACE
Content-Length: 1293
Content-Type: text/html
Date: Fri, 27 May 2011 02:08:18 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET}

এমনকি যদি আমি আমার ওয়েব অ্যাপ্লিকেশনটির জন্য আইআইএস অনুরোধ ফিল্টারিংয়ের মধ্যে পরিষ্কারভাবে PUT পদ্ধতিটি অনুমতি দিই, তবুও একই ত্রুটি ঘটে।

আমি সন্দেহ করি এটি আইআইএস সম্পর্কিত সমস্যা। আমি আশা করছি কেউ আমার জন্য এই বিষয়ে কিছু আলোকপাত করতে পারে।

উত্তর:


214

প্রায়শই এই ত্রুটিটি ওয়েবডিএভি মডিউল দ্বারা ঘটে থাকে যা এই ধরণের অনুরোধগুলি হ্যান্ডেল করার চেষ্টা করে। একটি সহজ সমাধান হ'ল মডিউলগুলি এবং system.webServerবিভাগের হ্যান্ডলারগুলি থেকে আপনার ওয়েবকনফাইগ ফাইলের ঠিক ভিতরে। এখানে একটি কনফিগারেশন উদাহরণ:

<system.webServer>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
    <handlers>
        <remove name="WebDAV" />
    </handlers>
</system.webServer>

2
নিম্নলিখিত এমএস নিবন্ধটি ব্যবহার করে, আমি হ্যান্ডলারের সাথে অপসারণ ট্যাগ যুক্ত করেছি, তবে এটি এখনও কার্যকর হয়নি। আপনার উত্তরের জন্য ধন্যবাদ আমি এটির মডিউল বিভাগে যুক্ত করার দরকারও দেখছি। অনেক প্রশংসিত. এখানে নিবন্ধটি দেওয়া হয়েছে: asp.net/web-api/overview/testing-and-debugging/…
টড বার্ডসাল

দুর্দান্ত, আপনি আমাকে বেদনাদায়ক ডিবাগিংয়ের কয়েক ঘন্টা বাঁচিয়েছেন! :)
কাস্পারস ওজলস

সহজ এবং সহজ ফিক্স, ধন্যবাদ!
মোরেনাজেআরডি

আমি চেষ্টা করেছি কিন্তু আমার পক্ষে কাজ করে না। আমি এখনও ত্রুটিটি পেয়েছি 405 - পদ্ধতিটির অনুমতি নেই। নোট করুন যে আমি আইআইএস এক্সপ্রেস ব্যবহার করছি এবং ত্রুটিটি কোনওভাবে কেবল পুটে ঘটে তবে জিইটি, পোস্ট এবং ডিলেট করার জন্য কাজ করে।
থিয়েরি

46

আমি ব্যর্থ অনুরোধ ট্র্যাকিং সক্ষম করেছি এবং নিম্নলিখিত তথ্য পেয়েছি:

 <EventData>
  <Data Name="ContextId">{00000000-0000-0000-0F00-0080000000FA}</Data>
  <Data Name="ModuleName">WebDAVModule</Data>
  <Data Name="Notification">16</Data>
  <Data Name="HttpStatus">405</Data>
  <Data Name="HttpReason">Method Not Allowed</Data>
  <Data Name="HttpSubStatus">0</Data>
  <Data Name="ErrorCode">0</Data>
  <Data Name="ConfigExceptionInfo"></Data>
 </EventData>

সুতরাং, আমি আমার আইআইএস থেকে ওয়েবডিএভিভিমডুল আনইনস্টল করেছি, এখন সবকিছু ঠিক আছে ~

আইআইএস ট্রেসিং বৈশিষ্ট্যটি খুব সহায়ক।


1
আপনার উত্তরের জন্য ধন্যবাদ ! 2 দিন গবেষণার পরে, "405 পদ্ধতি অনুমোদিত নয়" এড়াতে পেলাম কেবলমাত্র কার্যকর সমাধানটি ছিল Application_BeginRequestপদ্ধতিটিতে সিওআরএস শিরোনামকে সংজ্ঞায়িত করা , যেমন এই উত্তরে বলা হয়েছে stackoverflow.com/a/14631068/827168 । তবে আপনার উত্তর অন্য সকলের চেয়ে ভাল কারণ এটি কিছু এলোমেলো প্যাচ প্রয়োগ করার পরিবর্তে সমস্যাটি স্পট করতে সহায়তা করে :)
pomeh

@ পোমেঃ আমি সর্বদা যুক্তি পূর্ণ করতে বিশ্বাস করি believe :)
স্মিভিকিপিডিয়া


1
দ্রষ্টব্য, আপনারও হ্যান্ডলার ম্যাপিংগুলিতে যেতে হবে এবং সেখান থেকে ওয়েবডিএভি মুছে ফেলা উচিত, অন্যথায় আপনি ত্রুটি বার্তাটি পাবেন Handler "WebDAV" has a bad module "WebDAVModule" in its module list
পাইপড্রিমবম্ব

26

এমভিসি 4 ওয়েবএপিআই প্রকল্প হোস্ট করার সময় আমার ওয়েবডিএভিতে এই সমস্যা হয়েছিল। আমি ওয়েলকনফিগটিতে এই লাইনটি যুক্ত করে এটির আশেপাশে পেয়েছি:

<handlers>
  <remove name="WebDAV" />
  <add name="WebDAV" path="*" verb="*" modules="WebDAVModule"
      resourceType="Unspecified" requireAccess="None" />
</handlers>

যেমনটি এখানে ব্যাখ্যা করা হয়েছে: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html


যাকে আসলে ওয়েবডিএভি দরকার তার পক্ষে সেরা সমাধান। কারও কাছে ওয়েবডিএভি দরকার কিনা তা আলাদা আলোচনা।
মিঃবোজঙ্গলস

24

এখান থেকে নেওয়া হয়েছে এবং এটি আমার পক্ষে কাজ করেছে:

1. আইআইএস ম্যানেজার যান।

2. আপনার অ্যাপ্লিকেশন ক্লিক করুন।

3. "হ্যান্ডলার ম্যাপিংস" এ যান।

৪. বৈশিষ্ট্য তালিকায় "WebDAV" এ ডাবল ক্লিক করুন।

5. "অনুরোধ বিধিনিষেধ" ক্লিক করুন।

6. "ক্রিয়াপদ" "ট্যাবটিতে" সমস্ত ক্রিয়াগুলি "নির্বাচন করুন।

Press. ঠিক আছে চাপুন।


3
এটি আমাকে সহায়তা করেছিল, তবে আমি আমার অভিজ্ঞতাটি দিয়ে পরিষ্কার করব। ২. (ওয়েব সার্ভিস) অ্যাপ্লিকেশন। ৩. কেন্দ্রের প্যানেলে হ্যান্ডলার ম্যাপিং আইকনে ডাবল ক্লিক করুন।
গ্যারি

19

আমি বেশিরভাগ উত্তর চেষ্টা করেছিলাম এবং দুর্ভাগ্যক্রমে, তাদের কোনওটিই সম্পূর্ণরূপে কাজ করেনি।

আমার জন্য যা কাজ করেছে তা এখানে। আপনি যে সাইটটির জন্য পুট করতে চান তার জন্য 3 টি জিনিস করার জন্য রয়েছে (সাইটটি নির্বাচন করুন):

  1. খুলুন WebDav Authoring Rulesএবং তারপরে Disable WebDAVডান বারে উপস্থিত বিকল্প নির্বাচন করুন ।

  2. নির্বাচন করুন Modules, এটি সন্ধান করুন WebDAV Moduleএবং এটি সরান।

  3. নির্বাচন করুন HandlerMapping, এটি সন্ধান করুন WebDAVHandlerএবং এটি সরান।

আইআইএস পুনরায় চালু করুন।


এইটা কাজ করে! Web.config ফাইল সম্পাদনা করে সমস্ত 3 টি পদক্ষেপ করা যায় কিনা তা জানেন না, তবে এটি কেবল আইআইএস ম্যানেজমেন্ট কনসোল ব্যবহার করে সহজ করে তুলেছে। কেবলমাত্র নোট করুন যে ওয়েবডিএভি * দিয়ে শুরু হওয়া 3 টি হ্যান্ডলারম্যাপিং এন্ট্রি রয়েছে - আমি সমস্ত 3 সরিয়েছি এবং জীবন ভাল ছিল।
স্লিমসঘস্ট

1
আমি ওয়েবড্যাব আনইনস্টল করার চেষ্টা করেছি এবং কাজ করিনি। তারপরে আমি উপরের তিনটি ধাপ অনুসরণ করে PUTকাজ শুরু করি।
বিরলেশেদেব

1
বাকী সাইটটিকে প্রভাবিত না করেই ভার্চুয়াল ডিরেক্টরিতে 2 এবং 3 পদক্ষেপ প্রয়োগ করা যেতে পারে।
টোনাতিও

1
অনেক ধন্যবাদ. তুমি আমাকে বাঁচালে. 7 ঘন্টা হতাশার পরে, আমি যে উত্তর দিতে পারি তার সবগুলি চেষ্টা করে এবং শেষ পর্যন্ত আপনার উত্তরটি আমাকে আঘাত করে। :)
জিশান সাফদার

1
ধন্যবাদ, এটি।
আহমদ হামদী

17

ওয়েবডিএভি-মডিউল অপসারণ করা যথেষ্ট। কেবলমাত্র আপনার ওয়েবকনফিগ পরিবর্তন করুন:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule" />

14

অব্যক্ত ওয়েবডিএভি বৈশিষ্ট্য সরাতে সেরা। প্রোগ্রাম এবং বৈশিষ্ট্যগুলিতে যান => উইন্ডোজ বৈশিষ্ট্যগুলি চালু বা বন্ধ করুন এবং এর অধীনে ওয়েবডিএভি প্রকাশনা অক্ষম করুন

ইন্টারনেট তথ্য পরিষেবাদি => ওয়ার্ল্ড ওয়াইড ওয়েব পরিষেবাদি => সাধারণ এইচটিটিপি বৈশিষ্ট্য

এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ! এটি পুরোপুরি আমার সমস্যাটিকে স্থির করেছে!
wmehanna

4

যে কারণেই হোক না কেন, ওয়েবডাভিভিমোডুলটিকে আমার ওয়েবকনফাইগটিতে "অপসারণ" হিসাবে চিহ্নিত করা আমার ক্ষেত্রে সমস্যাটি সমাধান করার পক্ষে যথেষ্ট ছিল না।

আমি অন্য পদ্ধতির যে পাওয়া করেছি হয়নি সমস্যা সমাধানের জন্য। আপনি যদি একই নৌকোটিতে থাকেন তবে এটি ব্যবহার করে দেখুন:

  1. আইআইএস ব্যবস্থাপকটিতে, অ্যাপ্লিকেশনটি নির্বাচন করুন যা পুটকে সমর্থন করতে হবে।
  2. বৈশিষ্ট্যগুলির ভিউতে, ওয়েবডিএভি অনুমোদনের বিধিগুলি সন্ধান করুন । এটিতে ডাবল-ক্লিক করুন, বা প্রসঙ্গ মেনু থেকে ফিচারটি খুলুন (ডান ক্লিক করুন) নির্বাচন করুন।
  3. অ্যাকশন ফলসে, ওয়েবডিএভি সেটিংসে সন্ধান করুন এবং ক্লিক করুন ...
  4. ওয়েবডিএভি সেটিংসে ফিল্টারিংয়ের অনুরোধ অনুরোধ করুন এবং তার অধীনে, ভার্ব ফিল্টারিংকে মঞ্জুরি দিন । সেট ক্রিয়া ফিল্টারিং অনুমতি দিন থেকে মিথ্যা
  5. অ্যাকশন ফলকে, প্রয়োগ ক্লিক করুন

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


4

আমার কাছ থেকে অন্য একটি টিপ। আমি পিএইচপি + আইআইএস ব্যবহার করেছি এবং পিএইচপি-র জন্য হ্যান্ডলার ম্যাপিংগুলিতে PUT ক্রিয়াটি নেই।

আইআইএস ম্যানেজার-> আপনার সাইট-> হ্যান্ডলার ম্যাপিং-> পিএইচপিএক্সএক্স_ভিয়া_ফাস্টসিজিআই-> সীমাবদ্ধতার অনুরোধ-> ক্রিয়াগুলিতে যান, তারপরে PUT যুক্ত করুন।

এটাই!


1
পিএইচপি ব্যবহারকারীদের এটির উত্তর।
স্পিডআফ্রাউন্ড

4

আরেকটি গুরুত্বপূর্ণ মডিউল যা PUT এবং ডিলিটের কাজ করবে তার পূর্বে পুনর্গঠন করা দরকার বিকল্পগুলি ক্রিয়াটি

<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="OPTIONSVerbHandler" />
<remove name="WebDAV" />
<add name="OPTIONSVerbHandler" path="*" verb="*" modules="ProtocolSupportModule" resourceType="Unspecified" requireAccess="Script" />
</handlers>

এছাড়াও এই পোস্টটি দেখুন: https://stackoverflow.com/a/22018750/9376681


3

আমার পুট, প্যাচ এবং মুছে ফেলার ক্ষেত্রে একই সমস্যা ছিল তবে ওয়েবড্যাভ ইনস্টল থাকা অবস্থায় কিছুই ছিল না। এই নিবন্ধের রেজোলিউশন 1 অবশেষে আমাকে সহায়তা করেছে: http://support.microsoft.com/kb/942051


2

আমার জন্য এই ত্রুটিটি সরবে না এবং PUT পদ্ধতিগুলিকে অনুমতি দেবে না, যাই হোক না কেন আমি আনইনস্টল করা ওয়েবডাভ, হ্যান্ডলারের এবং মডিউলগুলি থেকে ওয়েবডাভ অপসারণ করার জন্য ওয়েবকনফাইগে কনফিগারেশন রেখে, এবং আইআইএসের অনুরোধ ফিল্টারগুলিতে একটি অনুমোদিত ক্রিয়া হিসাবে সেট করি .. এবং নিশ্চিত করুন যে আইআইএস হ্যান্ডলার ম্যাপিংগুলি অনুরোধটি পরিচালনা করছে PUT কনফিগার করেছে ..

আমার সমস্যাটি শেষ পর্যন্ত এএসপি.নেট 4.5 এক্সটেনশনগুলির খারাপ ইনস্টলেশনগুলির কারণে হয়েছিল। সার্ভারের ভূমিকা এবং বৈশিষ্ট্যগুলি থেকে এসপ নেট সম্পর্কিত সমস্ত কিছু সরিয়ে ফেলা হয়েছে। পুনরায় আরম্ভ। ভূমিকা পুনর্গঠন এবং পুনরায় চালু। উপরের কনফিগারেশনের সাথে সবকিছুই কাজ করেছে।

--- নীচে পিটকে গ্রহণযোগ্য করে তুলবে, তবে এটি ভুল হ্যান্ডলারের কাছে প্রেরণ করবে। - নিচে স্বাক্ষর করুন

অবশেষে, ট্র্যাক হ্যান্ডলার ম্যাপিংয়ে আইআইএস-এ অনুমোদিত ক্রিয়া হিসাবে PUT ক্রিয়া যুক্ত করা .. যেহেতু আমি ত্রুটিযুক্ত ত্রুটি সনাক্তকরণ সক্ষম করেছিলাম এবং এই ক্রিয়াটি ক্রিয়াটি অনুমতি দিচ্ছিল না।

শেষবার যখন আমি অন্য সার্ভারের আইআইএস-তে একই সমস্যা পেয়েছিলাম তখন এটি ইউআরএল শেষে '/' হারিয়ে যাওয়ার কারণে ঘটেছিল কারণ এটি সম্ভবত ডিফল্ট ডকুমেন্ট ব্যবহার না করেই ডিফল্ট হ্যান্ডলার ব্যবহার করে এবং এখন আমি বুঝতে পারি যে .. তাই আইআইএস পরীক্ষা করে দেখুন অন্য কিছু সাহায্য না করলে হ্যান্ডলার ম্যাপিং।


2

আমার এই সমস্যাটি ছিল তবে ওয়েবডিএভি সম্পর্কিত কোনও কিছুই সমস্যা ছিল না। আমার ক্ষেত্রে, ক্লায়েন্টটি www.myServer.com/api/chart এ একটি পোস্ট পাঠাচ্ছিল। এই কলটি "এক্সটেনশনহীনউড়লহান্ডার-ইন্টিগ্রেটেড -৪.০" দ্বারা পরিচালিত হওয়া উচিত, তবে, কোনওভাবে আমার সার্ভার ডিরেক্টরিতে একটি স্থানীয় ফাইল কাঠামো তৈরি করা হয়েছিল "... \ সার্ভার \ এপিআই \ চার্ট \"। "।"। এর অর্থ হ'ল পরিবর্তে "স্ট্যাটিকফিল" হ্যান্ডলারটি ডাকা হচ্ছে। স্থানীয় ফাইলগুলি মুছে ফেলা অবশেষে সমস্যার সমাধান করেছে।


2

আমার জন্য যা কাজ করেছে তা এখানে:

আইআইএস খুলুন এবং আপনার সাইটে ক্লিক করুন।

1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.


2

আমি কৌনিক 8 ব্যবহার করছিলাম এবং। নেট কোর এপিআই ছিল। আমি আমার পরিষেবা ওয়েবকনফিগ ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করছি যে আমার ত্রুটি সমাধান।

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
</system.webServer>

1

উইন্ডোজ সার্ভার ২০১২ -> সার্ভার পরিচালকের কাছে যান -> ভূমিকা ও বৈশিষ্ট্যগুলি সরান -> সার্ভারের ভূমিকা -> ওয়েব সার্ভার (আইআইএস) -> ওয়েব সার্ভার -> সাধারণ HTTP বৈশিষ্ট্য -> ওয়েবডিএভি প্রকাশনাটি আনচেক করুন এবং এটি সরান -> সার্ভার পুনরায় চালু করুন art


0

যদি আইআইএস অ্যাপ পুলটি ক্লাসিক মোডের অধীনে চলমান থাকে তবে নিশ্চিত হয়ে নিন যে আপনার ওয়েবকনফাইগে নিম্নলিখিতগুলি রয়েছে

<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />

    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />

0

আমার ক্ষেত্রে আমি ওয়েব ডিপ্লয়িকে অন্য একটি বন্দরে স্থানান্তরিত করেছিলাম, এটি আইআইএস বন্দরও ছিল (৮০ নয়)। আমি প্রথমে বুঝতে পারি নি, তবে একই বন্দরের নীচে উভয়ই চলতে কোনও ত্রুটি না থাকলেও মনে হচ্ছে ওয়েব ডিপ্লয়ই সম্ভবত কোনও কারণে আইআইএসের পরিবর্তে প্রথমে প্রতিক্রিয়া জানিয়েছিল যার ফলে এই ত্রুটি ঘটেছে। আমি আমার আইআইএস বাইন্ডিংটিকে অন্য একটি বন্দরে সরিয়েছি এবং সবকিছু ঠিক আছে। ;)


0

ওয়েবড্যাভকে একেবারে সক্রিয় হতে রোধ করতে, অ্যাপ্লিকেশন হোস্টকনফিগ থেকে নিম্নলিখিত এন্ট্রিটি সরান: <add name="WebDAVModule" />

এন্ট্রিটি মডিউল বিভাগে অবস্থিত।

কনফিগারেশনের সঠিক অবস্থান: C:\Windows\System32\inetsrv\config\applicationHost.config


0

আমার একই সমস্যা ছিল, এসপনেট কোরটিতে একটি রেস্টস্টুল এপিআই চলছে।

আমি ওয়েবডিএভি আনইনস্টল করতে চাইনি এবং উপরে বর্ণিত বেশিরভাগ প্রতিকারের চেষ্টা করেছি। আমি ক্রিয়া = "*" উভয়ই সাইটে এবং সার্ভারে সেট করার চেষ্টা করেছি, কিন্তু সাফল্য ছাড়াই।

আমার জন্য কৌতুকটি নিম্নলিখিতটি ছিল:

আইআইএস পরিচালক -> সাইটগুলি -> মাইসাইট -> হ্যান্ডলারম্যাপিংস -> এসপনেটকোর -> সম্পাদনা করুন

-> সীমাবদ্ধতার অনুরোধ করুন -> অ্যাক্সেস -> কিছুই নয় (এটি স্ক্রিপ্ট ছিল)।

এর পরে সবকিছু কাজ করেছে, এমনকি যদি আমি মূল ওয়েবডিএভি বিকল্পগুলি প্রতিস্থাপন করি।

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