מה לעשות כששימוש עם UrlRoutingHandler לא עובדת תחת IIS

10 בנובמבר 2011

תגיות: , ,
אין תגובות


 


בעבר כתבתי על היכולת לייצר מנגנון URL Shortcut בשימוש עם UrlRoutingHandler.

 

לפעמים הקוד במחלקה עובד רק כשעובדים עם השרת הפנימי של visual studio, אבל כשעוברים לעבוד מול IIS, הקוד מפסיק לעבוד.

 

 

נקח לדוגמא את הקוד הבא:

 

 



public class RoutingHandler : UrlRoutingHandler, IRouteHandler


{


    public string Url { get; set; }


 


    protected override void VerifyAndProcessRequest(IHttpHandler httpHandler, HttpContextBase httpContext)


    {


            httpContext.Response.Redirect(Url);


    }


 


    public IHttpHandler GetHttpHandler(RequestContext requestContext)


    {


        return this;


    }


}


 

הקוד הזה יאפשר לנו להשתמש במנגנון ה – Routing גם באפליקציות asp.net web forms עבור קבצי html.

 

לדוגמא נוכל לכתוב ב – application start את הקוד הבא:

 



RouteTable.Routes.Add("login",


        new Route("login",


            new RoutingHandler()


            {


                Url = "~/Managment/login.htm"


            }));


 

 

מה שאומר, שאם נגלוש בצורה הבאה: http://domain.com/login נגיע אוטומטית ל – http://domain.com/managment/login.htm

 

(מכיון ששימוש סטנדרטי של RouteTable.Routes.MapPageRoute לא עובד עם קבצי htm)

 

 

בכל מקרה הקוד עובד תמיד תחת vs, אבל כשמעלים ל – IIS לפעמים זה מפסיק לעבוד.

 

 

לאחר שיטוט בגוגל, הגעתי לכאן.

מה שצריך לעשות הוא ראשית להוסיף בקונפיג (תחת system.webServer) את הקוד הבא (בהנחה שיש לכם iis 7 ומעלה)

 



<handlers>


  <add name="UrlRoutingHandler"


        preCondition="integratedMode"


        verb="*"


        path="UrlRouting.axd"


        type="LP.Web.RoutingHandler, LP.Web"/>


</handlers>


 

במידה ומותקן לכם על HttpRedirection תצטרכו להוסיף בקונפיג גם את הקוד הבא:

 



<modules runAllManagedModulesForAllRequests="true">


  <remove name="UrlRoutingModule"/>


  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,


                                      System.Web,


                                      Version=4.0.0.0,


                                      Culture=neutral,


                                      PublicKeyToken=b03f5f7f11d50a3a" />


</modules>


 

כעת הקוד שלכם יעבוד גם על IIS

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *