سؤال

لقد قمت بإنشاء خدمة WCF REST (AKA WebHTTP) في .NET 4 ، باستخدام قالب خدمة REST من Microsoft 40. أنا أستضيف الخدمة في IIS 6.

يستخدم قالب الخدمة Routetable في Global.asax كوسيلة لإنشاء عنوان URL "نظيف" لا يشمل ".SVC" فيها. فمثلا:

http: // localhost / riptions / 878

احصل على العمل بشكل جيد ضد عنوان URL هذا ، ولكن وضع وحذف يؤدي إلى HTTP 501 ، "لم يتم تنفيذه".

إذا قمت بإنشاء ملف .SVC بسيط مثل هذا:

<%@ ServiceHost Language="C#" Debug="true" Service="MyProject.FlightsService"%>

ثم يمكنني استخدام وضع وحذف ضد عنوان URL هذا:

http: // localhost / flightsservice.svc / 878

هل يعرف أي شخص ما إذا كان من الممكن وضع وحذف العمل ضد عنوان URL "النظيف" أعلاه؟ يبدو أنه لا توجد وسيلة لتكوين IIs للسماح بذلك لأنه لا يوجد امتداد ملف لتكوين الإعدادات لها ، ولا أريد السماح بوضع وحذف على مستوى العالم.

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

المحلول

لم أعمل مع IIS6 منذ فترة (ولم يتم تثبيته ، لذلك سأخرج من الذاكرة هنا) ، لكن كان علي تنفيذ شيء مشابه مع IIS6 لتوجيه عناوين URL بدون تمديد في IIS6.

يمكنك تمكين تعيينات البرنامج النصي Wildcard على أساس المجلد بواسطة Hacking IIS Manager. هذه مشاركة مدونة هو ما تابعته وهو يعمل بشكل جيد (وهذا هذا حلقة الوصل يوفر المزيد من الخلفية). إنه حقًا خطأ في المدير ، وليس Iis نفسه (على الأقل هذا ما أقوله لنفسي).

هل يمكنك الرجوع إلى خدماتك في مجلد فرعي في موقعك (على سبيل المثال http: // localhost/services/flight/878))؟ إذا كان الأمر كذلك ، وإذا قمت بتطبيق Hack Manager Hack أعلاه ، فأعتقد أنه يمكنك تمكين جميع أفعال HTTP لهذا الدليل. مرة أخرى ، سأخرج من الذاكرة (ولم ننفذ سوى الحصول على وحدات ، لذلك لم أتعامل مع Puts and Exsing) ، لذلك آمل أن أحصل على هذا بشكل صحيح.

اسمحوا لي أن أعرف إذا كنت بحاجة إلى مزيد من المعلومات أو إذا كانت ذاكرتي تنزلق. :) آمل أن يساعد هذا!

نصائح أخرى

إذا تم نشر تطبيق الويب الخاص بك في بيئات DEV/الإنتاج المتعددة ، فيبدو أن أفضل طريقة هي تعطيل WebDAV على مستوى الويب. للقيام بذلك ، قم بإزالة WebDavModule ومعالج WebDAV كما في المثال أدناه:

<system.webserver>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webserver>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top