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

时间:2015-04-27 10:38:42

标签: asp.net-mvc iis

我们使用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中,对于此应用程序,我配置了以下脚本处理程序映射

  • 请求路径:* .m

  • 可执行文件: C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll // as 每个特立独行的文件

  • 姓名:Maverick

请求限制

  • 如果请求映射到:文件或文件夹

  • ,则调用处理程序
  • 动词:所有动词

  • 访问:执行

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,它映射到http://localhost/app/welcome.m,然后返回404.日志文件显示302重定向到welcome.m然后IIS不知道如何处理它,所以配置必须是错误。

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

有没有人对我可能遗失的内容有任何想法?

1 个答案:

答案 0 :(得分:0)

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

以防万一将来遇到这种情况。