繁体   English   中英

我可以通过子网站的web.config文件设置“默认网站”的属性吗? (IIS6)

[英]Am I able to set “Default Web Site”'s properties through a child website's web.config file? (IIS6)

我在IIS6下遇到以下问题。 我完全理解该问题,我只是在寻找最佳解决方案。

我有以下几点:

  • 默认网站
    • api服务
    • 我们的网站

网站“ apiservices”仍在.NET Framework v2.0下运行。 网站“ ourwebsite”使用MVC3在.NET Framework v4.0下运行。

.NET 4.0中引入的一项很好的新功能,即无扩展URL处理,由于我们的混合.NET框架版本而给我们带来了一些问题。

如果我去:

  • 'ourwebsite'->右键单击->属性->虚拟目录选项卡->配置。 我看到存在一个映射到.NET Framework v4.0 aspnet_isapi.dll的通配符应用程序。 这是正确的,但由于我们的设置而不够。
  • 'apiservices'->右键单击->属性->虚拟目录选项卡->配置。 我看到存在一个映射到.NET Framework v2.0的通配符应用程序aspnet_isapi.dll。 这对于我们的设置是正确的,不能设置为4.0,否则它将损坏。

现在,这是由于Microsoft的更改而引入的错误: 因为ASP.NET v4.0应用程序没有在根级别定义其通配符映射,所以默认Web站点,应用程序内部的PageMethods都无法正确路由和404。

疯狂的部分? 如果我去:

  • “默认网站”->右键单击->属性->“主目录”选项卡->配置。 然后,从此处将.NET Framework v4.0添加到我的Wildcard应用程序映射中。
  • 我单击确定。 系统提示我指出要将这些更改应用到哪些子网站,因为它们都定义了自己的通配符应用程序映射。 我在这里指出,我只希望将此通配符映射应用于“ ourwebsite”而不是“ apiservices”

应用此更改可解决我们的问题。

现在,我想知道如何设置此设置? 这是web.config文件的工作吗?它可以像这样控制上级设置吗? 还是由我们的安装程序执行自定义操作?

编辑:看来我需要使用WIX进行此操作。 当前,我有下面的代码在子级别设置通配符映射。 我正在探索在根级别设置它而不覆盖“ apiservices”通配符映射的方法:

<iis:WebVirtualDir Id="CSWebVirtualDir" Alias="[TARGETCSWEBVDIR]" Directory="CABLESOLVEWEBDIR" WebSite="DefaultWebSite">
    <iis:WebApplication Id="CSWebApplication" Name="[TARGETCSWEBVDIR]" AllowSessions="yes" ParentPaths="yes" ScriptTimeout="900" SessionTimeout="60" WebAppPool="CSWebAppPool" ClientDebugging="no" ServerDebugging="no" Isolation="medium">
        <iis:WebApplicationExtension Executable="[FRAMEWORKROOT]v4.0.30319\aspnet_isapi.dll" CheckPath="no" Script="yes" Verbs="GET,HEAD,POST" />
    </iis:WebApplication>
    <iis:MimeMap Id="MIMEXAP" Type="application/x-silverlight-app" Extension=".xap" />
    <iis:MimeMap Id="MIMEXAML" Type="application/xaml+xml" Extension=".xaml" />
</iis:WebVirtualDir>

<iis:WebVirtualDir Id="CSWebAPIVirtualDir" Alias="[TARGETCSWEBAPIVDIR]" Directory="CABLESOLVEWEBAPIDIR" DirProperties="CSWebAPIVirtualDirProperties" WebSite="DefaultWebSite">
    <iis:WebApplication Id="CSWebAPIApplication" Name="[TARGETCSWEBAPIVDIR]" ParentPaths="yes" AllowSessions="yes" ScriptTimeout="900" SessionTimeout="60" WebAppPool="CSWebAPIAppPool" ClientDebugging="no" ServerDebugging="no" Isolation="medium">
        <iis:WebApplicationExtension Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll" CheckPath="no" Script="yes" Verbs="GET,HEAD,POST" />
    </iis:WebApplication>
</iis:WebVirtualDir>

我们的解决方案是将这些步骤添加到我们的安装指南中。 我无法确定简单地修改默认网站的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM