IIS7.5 上的 Maverick MVC - 处理程序映射

Maverick MVC on IIS7.5 - Handler mapping

我们有一个遗留的(非常遗留的!)应用程序使用 Maverick.net:http://sourceforge.net/projects/mavnet/

这在 IIS6 上运行良好,但我们现在正在将其迁移到 iis7.5,这应该相当容易,但对我们来说不起作用。我们已将应用程序池配置为在经典模式下使用 .net Framework v2.0 来模拟 iis6。

我们在 web.config

中有以下内容
        <httpHandlers>
        <add verb="*" path="*.m" type="Maverick.Dispatcher, Maverick" />
    </httpHandlers>
    </system.web>
<system.webServer>
    <handlers accessPolicy="Read, Execute, Script">
        <add name="Maverick" path="*.m" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="File" requireAccess="Execute" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
    </handlers>
</system.webServer>

在 IIS7.5 中,我为这个应用程序配置了以下脚本处理程序映射

请求限制

maverick.config文件内容如下:

<?xml version="1.0"?><maverick version="2.0" default-view-type="document" default-transform-type="document">
<commands>

    <command name="welcome"> <!--Entry page-->
        <controller class="PAPI.Controllers.StoreDetails, PAPI"/>
        <view name="login" path="login.aspx" type="redirect"/>
        <view name="help" path="help.aspx" type="redirect"/>
        <view name="error" path="error.aspx" type="redirect"/> 
    </command>

    <command name="setPrincipal"> <!--Sets the security-->
        <controller class="PAPI.Controllers.SetPrincipal, PAPI"/>
        <view name="login" path="login.aspx" type="redirect"/>
        <view name="success" path="instructions.m" type="redirect"/>
        <view name="error" path="error.aspx" type="redirect"/> 
    </command>  

    <command name="instructions"> <!--Controller for instruction pages-->
        <controller class="PAPI.Controllers.GetNextPage, PAPI"/>
        <view name="login" path="login.aspx?" type="redirect"/>
        <view name="dataProtection" path="dataprotection.aspx" type="redirect"/>
        <view name="instructions1" path="instructions1.aspx?" type="redirect"/>
        <view name="example" path="example.aspx?" type="redirect"/>
        <view name="instructions2" path="instructions2.aspx?" type="redirect"/>
        <view name="questionnaire" path="questionnaire.aspx?" type="redirect"/>
        <view name="finished" path="finished.aspx?" type="redirect"/>
        <view name="error" path="error.aspx" type="redirect"/> 
    </command>

</commands>

这与 IIS6 afaik 相同。但它不适用于 iis7.5。当请求页面时,例如http://localhost/app/login.aspx, it maps to http://localhost/app/welcome.m 然后 returns 一个 404。日志文件显示 302 重定向到 welcome.m 然后 IIS 不知道如何处理它,所以配置一定是错误的。

我们尝试使用模块映射而不是脚本映射,但出现了同样的问题。

有人知道我可能遗漏了什么吗?

所以我的同事通过添加 2 个配置为使用 IsapiModule 而不是脚本映射的模块映射来解决这个问题。一个用于指向 C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 的 32 位,一个用于指向 C:\Windows\Microsoft.NET\Framework64\v2 的 64 位。 0.50727\aspnet_isapi.dll.

以防万一以后有人遇到这个问题。