Маршрутизация замка MonoRail с IIS 7?

Volatile.Read(ref *p);

Пример

Но вы должны гарантировать, что адрес выровнен по 4 байта. В противном случае чтение не будет атомарным.

6
задан Vorleak Chy 14 November 2008 в 13:19
поделиться

3 ответа

Как Вы настраиваете маршрутизацию? У меня были проблемы самого, когда попытка управлять правилами маршрутизации от web.config, но перемещение его к встроенному коду на запуске приложение работала на меня.

Я пытался найти ответ на то, почему xml-путь не работал, но никогда не находил тот. Они заставили майора переписать механизма маршрутизации начиная с RC3, который, возможно, повредил его.

Пример от Application_OnStart ()


var rule = new PatternRoute( "default", "/" )
    .DefaultForController().Is()
    .DefaultForAction().Is( "index" );

RoutingModuleEx.Engine.Add( rule );

Не забудьте загружать RoutingEngineModule перед MonoRailHandler в web.config.

1
ответ дан 17 December 2019 в 02:35
поделиться

Если Вы находитесь на IIS7, Вам нужна регистрация модуля маршрутизации в system.webServer/httpModules узле.

system.web/httpHandlers и httpModules являются AFAIK, проигнорированным IIS7.

MonoRail, направляющий определенно, работает; у нас есть он и работающий счастливо. Вот конфигурация и global.asax.cs отрывки:

    <system.web>
    <authentication mode="None" />

    <compilation debug="true" />

    <!-- IIS6 / integrated dev server handler/module config -->
    <httpHandlers>
        <clear />
        <add path="favicon.ico" verb="*" type="System.Web.StaticFileHandler"/>
        <add path="Trace.axd" verb="*" type="System.Web.Handlers.TraceHandler"/>
        <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" />
        <add path="*.spark" verb="*" type="System.Web.HttpForbiddenHandler" />
        <add path="*.sparkjs" verb="*" type="System.Web.HttpForbiddenHandler" />
        <add path="/content/**/*.*" verb="*" type="System.Web.StaticFileHandler" />
  <add path="/content/**/**/*.*" verb="*" type="System.Web.StaticFileHandler" />
  <add path="/content/**/**/**/*.*" verb="*" type="System.Web.StaticFileHandler" />
  <add path="/content/**/**/**/**/*.*" verb="*" type="System.Web.StaticFileHandler" />
  <add path="*" verb="*" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework" />
        <add verb="*" path="*.castle" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework"/>
    </httpHandlers>

    <httpModules>
        <add name="routing" type="Castle.MonoRail.Framework.Routing.RoutingModuleEx, Castle.MonoRail.Framework" />
        <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.MicroKernel" />
    </httpModules>

    <trace enabled="true"/>

</system.web>

<!-- IIS 7 handler/module config -->
<system.webServer>
    <handlers>
        <clear />
        <add name="FavIcon" path="favicon.ico" verb="*" type="System.Web.StaticFileHandler"/>
        <add name="Trace" path="Trace.axd" verb="*" preCondition="integratedMode" type="System.Web.Handlers.TraceHandler"/>
        <add name="BlockConfig" path="*.config" verb="*" preCondition="integratedMode" type="System.Web.HttpForbiddenHandler" />
        <add name="BlockSpark" path="*.spark" verb="*" preCondition="integratedMode" type="System.Web.HttpForbiddenHandler" />
        <add name="BlockSparkJs" path="*.sparkjs" verb="*" preCondition="integratedMode" type="System.Web.HttpForbiddenHandler" />
        <add name="content" path="/content/**/*.*" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
        <add name="content2" path="/content/**/**/*.*" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
        <add name="content3" path="/content/**/**/**/*.*" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
        <add name="content4" path="/content/**/**/**/**/*.*" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />
        <add name="castle" path="*" verb="*" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv2.0" />
    </handlers>

    <modules>
        <add name="routing" type="Castle.MonoRail.Framework.Routing.RoutingModuleEx, Castle.MonoRail.Framework" />
        <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.MicroKernel" />
    </modules>

    <validation validateIntegratedModeConfiguration="false" />

</system.webServer>

(На самом деле мы никогда не получали эту работу над IIS6, но делали на веб-dev сервере - мы имеем поддержку с тех пор и были сказаны, что это будет работать с * отображающийся на уровне IIS6 к aspnet_isapi.dll - но к тому времени, dev, выполняющий Win2003, обновленный к чему-то с IIS7 на нем, таким образом, мы не попробовали это),

        protected virtual void RegisterRoutes(IRoutingRuleContainer engine)
    {
        engine.Add
            (
            new PatternRoute(ThorController.CtlrHome, "/[controller]")
                .DefaultForController().Is(ThorController.CtlrHome)
                .DefaultForArea().Is(ThorController.AreaPublic)
                .DefaultForAction().Is(ThorController.ActionIndex)
            );

        engine.Add
            (
            new PatternRoute(ThorController.KeyDefault, "/<area>/<controller>/[action]/[id]")
                .DefaultForArea().Is(ThorController.AreaPublic)
                .DefaultForAction().Is(ThorController.ActionIndex)
                .DefaultFor(ThorController.KeyId).IsEmpty
            );
    }

(первый маршрут обрабатывает наш корневой каталог приложения),

(значения являются consts на нашем базовом классе ThorController, чтобы попытаться сократить строковые литералы),

Как в стороне, кто-либо знает, существует ли там синтаксис, чтобы сделать то, что мы делаем со статической обработкой файла в одной строке? Существует, конечно, должен быть лучший путь, чем наше "решение" ;-)

5
ответ дан 17 December 2019 в 02:35
поделиться

Я попытался уже зарегистрировать маршрутизацию как это, но она все еще не работает.

Вот мой конфигурационный файл:

<system.web>
<httpHandlers>
  <add verb="*" path="*.rail" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework" />
  <add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler" />
  <add verb="*" path="*.boo" type="System.Web.HttpForbiddenHandler" />
  <add verb="*" path="*.st" type="System.Web.HttpForbiddenHandler" />
</httpHandlers> 
<httpModules>
  <add name="routing" type="Castle.MonoRail.Framework.Routing.RoutingModuleEx, Castle.MonoRail.Framework" />
</httpModules></system.web> 
<system.webServer>
    <handlers>
        <add name="MR" path="*.rail" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
    </handlers>
</system.webServer>
0
ответ дан 17 December 2019 в 02:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: