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

时间:2012-02-17 19:27:44

标签: asp.net deployment iis-6 isapi-rewrite

我在IIS6下遇到以下问题。我完全理解这个问题,我只是在寻找最好的解决方案。

我有以下内容:

  • 默认网站
    • apiservices
    • ourwebsite

网站'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应用程序没有在根级别定义其通配符映射,我们的应用程序内部的默认网站,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>

1 个答案:

答案 0 :(得分:0)

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