【问题标题】:Http Hanlder must be reset with each deployment. How can I add this functionality to the web.config每次部署都必须重置 Http Handler。如何将此功能添加到 web.config
【发布时间】:2011-02-18 17:07:56
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: .net deployment iis-7 httphandler


    【解决方案1】:

    好吧,我知道发生了什么;当您编辑处理程序映射并为单个站点添加自定义映射时,它实际上通过将“处理程序”元素添加到 system.webServer 部分(如果它尚不存在)来编辑 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 中,以用于我要部署到的环境(在这种情况下是 beta 版——但我需要为生产做同样的事情)和 viola,设置是现在在部署时就位。发生的情况是,这些设置在每次部署期间都丢失了,因为(显然)web.config 被覆盖了。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2019-09-14
        • 1970-01-01
        • 2020-09-11
        • 2011-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-14
        • 2017-01-06
        相关资源
        最近更新 更多