إرجاع معالجات 404 خطأ في خط الأنابيب المتكامل IIS7.5

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

  •  21-09-2019
  •  | 
  •  

سؤال

<httpHandlers>
  <add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2" />
  <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
  <remove verb="*" path="*.asmx" />
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpHandlers>

لدي مشكلة مع IIS7.5 في الوضع المتكامل. عندما أستخدمه في معالجات الوضع الكلاسيكي التي قدمت أعلاه تعمل بشكل جيد ، ولكن إذا قمت بالتبديل إلى خط الأنابيب المتكامل - فإن جميع الطلبات التي يجب معالجتها Return 404 خطأ. لماذا ا؟

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

المحلول

يمكن أن أكون على بعد أميال هنا لأنني بعيدًا عن خبير IIS بقدر ما يمكن أن أكون ، لكنني صادفت سؤالك لأنني أيضًا أواجه مشكلة مع IIS7 في وضع متكامل. شيء واحد لاحظته هو أنك تستخدم قسم Httphandlers ، الذي يقع في System.Web. ومع ذلك ، أعتقد أن الوضع المتكامل تحتاج إلى استخدام System.Webserver قسم:

<system.webServer>
   <handlers>
      <add... >
   </handlers>
</system.webServer>

آمل أن يقوم شخص يعرف ما يتحدثون عنه بتصحيحني إذا كنت مخطئًا.

نصائح أخرى

في ال Request Filtering القسم الذي كنت بحاجة إلى تعيين ملفات .AXD كملحق مسموح Allow unlisted file name extensions تم إيقاف تشغيلها ، والتي كانت مختلفة عن بيئة التطوير الخاصة بي.

لقد قمت مؤخرًا بنقل موقع ويب عميل من تثبيت IIS6 القديم إلى IIS7. كانوا يركضون إلى 404s على تطبيقهم عند الاتصال .AXD أيضًا. تم تعيين موقعهم على .NET 2 ، أذونات صحيحة ، بدا كل من المعالجات جيدة. انتهى الأمر بتغيير تجمع التطبيقات الخاص بهم من "وضع خط الأنابيب المدارة" المدمج إلى الكلاسيكية ، وهذا يحل المشكلة لتطبيقها.

بعد تجربة الكثير من الخيارات ، لم ينجحوا. لكن هذا نجح. في مجلد AppStart الخاص بك ، أضف Routes.ignoreroute ({Resource} .Axd/{*pathinfo} ") في RouteConfig.cs كما هو موضح أدناه.

public static void RegisterRoutes(RouteCollection routes) {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top