DCSIMG
מה לעשות כששימוש עם UrlRoutingHandler לא עובדת תחת IIS - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

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

 

בעבר כתבתי על היכולת לייצר מנגנון 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
פורסם: Nov 10 2011, 05:51 PM by Shlomo | with no comments
תגים:, ,
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 3 and 3 and type the answer here:


Enter the numbers above: