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 中,我为这个应用程序配置了以下脚本处理程序映射
请求路径:*.m
可执行:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll // 作为
根据特立独行的文档
姓名:小牛
请求限制
如果请求映射到:文件或文件夹,则调用处理程序
动词:所有动词
访问:执行
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.
以防万一以后有人遇到这个问题。
我们有一个遗留的(非常遗留的!)应用程序使用 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 // 作为 根据特立独行的文档
姓名:小牛
请求限制
如果请求映射到:文件或文件夹,则调用处理程序
动词:所有动词
访问:执行
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.
以防万一以后有人遇到这个问题。