我的应用程序是 dotnet 4 混合 - 某些区域是 MVC,其他区域是 Web 表单。此应用程序最近升级到 dotnet 4,包含大量旧代码和一些不匹配的部分。不幸的是,它包含一个 telerik 组件,需要我以经典模式运行应用程序池。
为了解决这个问题(在 IIS7 中),我必须向 IIS 配置添加处理程序映射。此映射基本上是一个通配符映射,它将通配符路径“*”指向 %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll。
我遇到的问题是:出于某种原因,部署站点时此映射被删除。那么,我可以将此映射的功能添加到 Web 配置中吗?如果可以,怎么做?
或者是否有另一种解决方案可以使此手动添加的映射“粘性”,以便它在部署期间和部署之后保持不变?(我也在 StackOverflow 上问了这个问题,因为我不确定这应该是编码问题还是服务器问题)
答案1
这对您的部署问题没有帮助(我必须研究一下这部分),但您始终可以在部署后直接编辑 web.config 服务器端。显然,前提是您在服务器上具有写入权限。
答案2
好吧,我明白发生了什么;当您编辑处理程序映射并为单个站点添加自定义映射时,它实际上会通过向 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 中(在本例中是测试版——但我需要对生产环境执行相同的操作),然后,设置现在在部署时就位了。发生的事情是,这些设置在每次部署期间都会丢失,因为(显然)web.config 被覆盖了。
感谢 squillman 尽力帮助我;尽管是我自己想出来的!