كيفية حل حالة HTTP 405 "الطريقة غير مسموح بها" عند الاتصال بخدمات الويب

StackOverflow https://stackoverflow.com/questions/151413

  •  02-07-2019
  •  | 
  •  

سؤال

لدي عزلة حيث أحتاج إلى الوصول إلى خدمة ويب SOAP مع أمان WSE 2.0.لقد حصلت على جميع وكلاء c# المُنشأين (المشتقين من Microsoft.Web.Services2.WebServicesClientProtocol)، أقوم بتطبيق الشهادة ولكن عندما أقوم باستدعاء طريقة ما، أحصل على خطأ:

System.Net.WebException : The request failed with HTTP status 405: Method Not Allowed.
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

لقد أجريت بعض البحث على Google ويبدو أن هذه مشكلة في تكوين الخادم.ومع ذلك، يتم استخدام خدمة الويب هذه من قبل العديد من العملاء دون أي مشكلة (يتم توفير خدمة الويب من قبل شركة Telecom New Zealand، لذلك لا بد من تكوينها بشكل صحيح.أعتقد أنه مكتوب بلغة جافا)

يمكن لأي شخص أن يلقي بعض الضوء على هذه القضية؟

هل كانت مفيدة؟

المحلول

حسنا، وجدت ما هي المشكلة.كنت أحاول الاتصال بعنوان url.wsdl بدلاً من .asmx url.دوه!

نصائح أخرى

واجهت نفس المشكلة ولكن التفاصيل كانت مختلفة:

عنوان URL الذي كنا نستخدمه لا يحتوي على جزء الملف (.asmx).كان الاتصال بعنوان URL في المتصفح أمرًا جيدًا.لقد نجح أيضًا في عميل بسيط يقوم بتعيين عنوان URL من خلال Visual Studio.لكنها لم تنجح في تعيين عنوان URL ديناميكيًا!أعطى نفس الخطأ 405.

أخيرًا وجدنا أن إضافة جزء الملف إلى عنوان URL لخدمة الويب قد حل المشكلة.ربما خطأ .Net Framework؟

لقد وجدت أن هذا يرجع إلى عدم تثبيت WCF على IIS.الشيء الرئيسي هو أنه يجب تعيين الامتداد .svc في IIS انظر MSDN هنا. استخدم أداة ServiceModelReg لإكمال التثبيت.ستحتاج دائمًا إلى التحقق من تثبيت WCF وتعيين .svc في IIS في أي وقت تحصل فيه على جهاز جديد أو تعيد تثبيت IIS.

حسنًا، هل يستخدم هؤلاء العملاء الآخرون أيضًا C#/.NET؟

الطريقة غير مسموح بها --> هل يمكن أن تكون هذه خدمة REST، بدلاً من خدمة ويب SOAP؟

في حالتي كانت المشكلة هي أن تكوين التطبيق تم تشكيله/استدعاءه بشكل غير صحيح:في التكوين، كان عنوان url للخدمة يستخدم "المضيف المحلي" كاسم مجال، ولكن اسم المضيف الحقيقي يختلف عن عنوان URL الذي اتصلت به:( لذلك قمت بتغيير "المضيف المحلي" في التكوين إلى اسم المجال الذي أستخدمه في URL.هذا كل شيء!

تحتاج إلى تمكين تفعيل HTTP

انتقل إلى لوحة التحكم > ميزات Windows > خدمات .NET Framework 4.5 المتقدمة > خدمات WCF > تنشيط HTTP

MethodNotAllowedEquivalent لحالة HTTP 405.يشير MethodNotAllowed إلى أن أسلوب الطلب (POST أو GET) غير مسموح به على المورد المطلوب.

المشكلة في enpoint uri ليست كاملة أو صحيحة إلى wcf - .scv تحقق من الوكيل الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top