IRouteHandler في نماذج ويب: طلبات التوجيه التي تتطلب HttpContext.User

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

سؤال

وأنا أحاول أن إضافة توجيه جميلة الأساسية إلى الويب Asp.Net نماذج التطبيق (يعمل تحت IIS 7، ووضع المتكامل): للطلبات القادمة إلى <لأ href = "http://mydomain.com/foo/ "يختلط =" noreferrer نوفولو "> http://mydomain.com/foo/ أود أن تظهر نتائج صفحة ديناميكية (<لأ href =" http://mydomain.com/foopage.aspx "يختلط =" noreferrer نوفولو "> http://mydomain.com/foopage.aspx ).

ولقد خلقت RouteHandler أن يفعل كل هذا ويبدو أن التوجيه بشكل صحيح.

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
     var page = System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/foo.aspx", typeof(MyApp.Web.Foo)) as MyApp.Web.Foo;
     return page as IHttpHandler;
    }

والمشكلة هي داخل بلدي طريقة GetHttpHandler RouteHandler، وجميع الحالات للمستخدم الحالي (requestContext.HttpContext.User، System.Web.HttpContext.Current.User) هي لاغية. للأسف، يحتاج foo.aspx أن تعرف ما هو المستخدم الحالي (للضوابط الدخول، الاشياء الدور، وما إلى ذلك)، لذلك جعل الصفحة هو رمي استثناءات لاغية المرجعية. تخميني هو أن هذه معالجات الطريق يطلقون النار من قبل Asp.Net يحصل على فرصة لسلك يصل إلى HttpContext مع معلومات المستخدم. أي فكرة عمل حول؟

وPS - أنا أدرك هذا يمكن تحقيقه عن طريق القيام Server.Transfer في صفحة على HTTP: / /mydomain.com/foo/default.aspx . أود أن استخدام التوجيه لهذا النوع من الشيء بدلا من وجود مجموعة من المجلدات عديمة الفائدة التي تتراكم الامور.

وشكرا!

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

المحلول 2

وتمكنت من هذا الرقم واحد نفسي.

ويشبه إلى حد كبير <وأ href = "https://stackoverflow.com/questions/400236/asp-net-routing-do-custom-routes-completely-skip-everything-in-the-global-asax#400289" > هذا السؤال وطرق بلدي كانوا يعملون على ما يرام عندما انتهى الأصل الطريق في .aspx اتصال ( HTTP : //mydomain.com/foo-origin.aspx )، لكنها فشلت عندما لم ( http://mydomain.com/foo-origin/ ).

المقال MSDN حول إعداد التوجيه مع نماذج الويب يقول لك لجعل بعض التغييرات في التكوين على شبكة الإنترنت، ولكن يترك إلى أن تحتاج إلى مجموعة على runAllManagedModulesForAllRequests لصحيح في وحدات عقدة:

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
  </system.webServer>
</configuration>

والآن هو يعمل بنجاح.

نصائح أخرى

وانظر جواب <لأ href = "https://stackoverflow.com/questions/400236/asp-net-routing-do-custom-routes-completely-skip-everything-in-the-global-asax# 400289 "> هذا السؤال ، مشابهة جدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top