asp.net - एकीकृत एचटीटीपी मॉड्यूल IIS 7 के लिए एकीकृत




iis-7 httpmodule (2)

मैं देख सकता हूं कि आप सही रास्ते पर हैं। क्या आपने सुनिश्चित किया है कि आपकी साइट का एप्लिकेशन पूल प्रबंधित पाइपलाइन मोड पर सेट है?

इसके अलावा यदि आप इसे विजुअल स्टूडियो वेब सर्वर (कैसिनी) के साथ बनाया है, तो <system.webServer> अनुभाग को नजरअंदाज कर दिया जाएगा। अगर आप मॉड्यूल को वहां से लोड करना चाहते हैं तो आपको IIS7 या IIS7.5 एक्सप्रेस की आवश्यकता होगी।

मुझे एक कस्टम त्रुटि हैंडलर के साथ परेशानी हो रही है जो मैंने बनाया था। यह system.webServer/modules होना चाहिए, लेकिन जब मैं इसे अपने वेब web.config system.webServer/modules टैग, इसे आरंभ नहीं किया जाता है।

यह मेरा web.config अनुभाग है:

<system.webServer>
  <modules>
    <add name="AspExceptionHandler" 
         type="Company.Exceptions.AspExceptionHandler, Company.Exceptions" 
         preCondition="managedHandler" />
  </modules>
</system.webServer>

यह मेरे HttpModule में कोड है:

using System;
using System.Web;
using Company.Settings;
using System.Configuration;

namespace Company.Exceptions
{
  public class AspExceptionHandler : IHttpModule
  {
    public void Dispose() { }

    public void Init(HttpApplication application)
    {
      application.Error += new EventHandler(ErrorHandler);
    }

    private void ErrorHandler(object sender, EventArgs e)
    {
      HttpApplication application = (HttpApplication)sender;
      HttpContext currentContext = application.Context;

      // Gather information5
      Exception currentException = application.Server.GetLastError();
      String errorPage = "http://www.mycompaniesmainsite.com/error.html";

      HttpException httpException = currentException as HttpException;
      if (httpException == null || httpException.GetHttpCode() != 404)
      {          
        currentContext.Server.Transfer(errorPage, true);
      }
      else
      {
        application.Response.Status = "404 Not Found";
        application.Response.StatusCode = 404;
        application.Response.StatusDescription = "Not Found";
        currentContext.Server.Transfer(errorPage, true);
      }
    }
  }
}

क्या कोई कृपया मुझे समझा सकता है कि मैं क्या कर रहा हूं, और IIS 7 एकीकृत प्रबंधित पाइपलाइन मोड कैसे काम करता है? क्योंकि मुझे जो अधिकतर उत्तर मिले IIS 6 के लिए HttpModules को कॉन्फ़िगर करने के बारे में हैं I


मुझे यह समस्या थी और पता चला कि कस्टमर्स को बंद करने से हेन्डलर को ट्रिगर करने से रोका गया।

यानी: यह एचटीटीपी मॉड्यूल में कब्जा करने के लिए त्रुटि घटना के लिए आपकी कॉन्फ़िग में आवश्यक है:

<system.web>
    <customErrors mode="Off" />
</system.web>




integrated-pipeline-mode