必须在每次部署时重置Http Handler。如何将此功能添加到web.config

时间:2010-05-12 15:52:16

标签: .net deployment iis-7 httphandler

我的应用程序是一个dotnet 4混合 - 某些领域的MVC,其他领域的Web表单。此应用程序最近升级到dotnet 4,包含许多旧代码和一些不匹配的部分。不幸的是,它包含一个telerik组件,要求我以经典模式运行应用程序池。

为了解决这个问题(在IIS7中),我必须添加一个处理程序映射到IIS配置。此映射基本上是一个通配符映射,它将通配符路径“*”指向%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll。

我遇到的问题是:由于某种原因,在部署站点时会丢弃此映射。那么,我可以将此映射的功能添加到Web配置吗?如果是这样,怎么样?

或者是否有另一种解决方案可以手动添加映射“粘性”,以便在部署期间和之后保持原样? (我也在ServerFault问这个,因为我不确定这应该是编码问题还是服务器问题)

2 个答案:

答案 0 :(得分:1)

好吧我弄清楚发生了什么事;当您编辑Handler映射并为单个站点添加自定义映射时,它实际上通过向system.webServer部分(如果它尚不存在)添加'handlers'元素来编辑Web配置,并在其中添加通配符列表,在我的例子中是这样的:

<system.webServer>
    <handlers>
        <add name="Wildcard" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
    </handlers>
</system.webServer>

所以我复制了这些行并将它们放在我正在部署的环境的web.config中(在这种情况下是测试版 - 但我需要对生产进行同样的操作)和中提琴,设置是现在在部署时就位。发生的事情是这些设置在每次部署期间都丢失了,因为(显然)web.config被覆盖了。

当我实际部署到生产时,我当然会改变.dll的路径以使用%windir%变量,以便它可以找到它正在寻找的内容!

答案 1 :(得分:0)

如果服务器上没有其他网站,您可以更改“根”网站的默认IIS设置 - 这些网站将在创建任何新网站时继承,这可能是您部署时发生的情况你的网站。