IIS - 如何在子目录中设置独立应用程序?

时间:2011-08-14 09:22:14

标签: iis blogengine.net screwturn

BlogEngine.NET设置在我的webhost(DiscountASP.NET)的根目录中。 我正在尝试在子目录(www.mydomain.com/wiki)中设置个人wiki。

wiki文件夹在IIS中设置为Web应用程序。 www.mydomain.com/wiki显示:

'/ wiki'应用程序中的

服务器错误。

编译错误

描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并相应地修改源代码。

编译器错误消息:CS0246:找不到类型或命名空间名称'BlogEngine'(您是否缺少using指令或程序集引用?)

来源错误:

Line 103:      </controls>
Line 104:      <namespaces>
Line 105:        <add namespace="BlogEngine.Core" />
Line 106:      </namespaces>
Line 107:    </pages>

因此,在将请求发送到子文件夹中的应用程序之前,Web服务器会查看根应用程序的web.config。为什么它现在找不到垃圾箱(在点击www.mydomain.com时工作正常),我不确定。

如何设置子文件夹应用程序,使其独立于根文件夹中安装的应用程序?

3 个答案:

答案 0 :(得分:0)

博客引擎位于您的网站:http://blog.discountasp.net/子域名不是root:)

至少你的域名DNS记录是这样建立的。

需要一个单独的app_pool才能让BE与其他人一起玩得好:)

所以你需要3个app_pools

  1. 适用于BE引擎
  2. 为您的主要网站www.discountasp.net
  3. 为您的Wiki
  4. 这样做他们不会互相混淆他们被视为3个完全不同的应用程序。

    在主“root”web.config中,确保将其设置为允许子文件夹中的web.config。

    但是,如果你有自己的app_pools,不确定是否需要这样做。

答案 1 :(得分:0)

阅读完毕后的结论: 首先,如果您可以控制所有IIS,那么通过应用程序池和虚拟目录在子目录中设置应用程序应该很容易。

在没有虚拟目录的情况下执行此操作并将其放在物理文件系统的子目录中的问题是子目录中的web.config将继承自根目录中的web.config。

在某些情况下,可以通过在子目录中的web.config中使用和标记来解决此问题,以删除继承的内容。根据我的口味,这有点太神秘了。

解决此问题的一种方法是将所有应用程序放在单独的子目录(/ blog / wiki等)中,然后在根目录中的所需应用程序上使用Url Rewriting。就我而言,我使用了规则:

^(?!(wiki|blog)).+

^&

指向/ blog(附加原始查询字符串)。

答案 2 :(得分:0)

我做的是在BlogEngen.Net的web.config文件的末尾添加了一个位置标记,删除了子文件夹的设置。

<location path="wiki" allowOverride="true">
<connectionStrings>
    <remove name="BlogEngine"/>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
    <compilation debug="false" targetFramework="4.0">
        <assemblies>
            <remove assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <remove assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <remove assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <remove assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <remove assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <remove assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <remove assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <remove assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <remove assembly="System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <remove assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <remove assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <remove assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </assemblies>
        <expressionBuilders>
            <remove expressionPrefix="LinqLength"/>
            <remove expressionPrefix="Reflect"/>
            <remove expressionPrefix="Session"/>
            <remove expressionPrefix="Server"/>
            <remove expressionPrefix="QueryString"/>
            <remove expressionPrefix="Code"/>
        </expressionBuilders>
    </compilation>
    <membership defaultProvider="AspNetSqlMembershipProvider">
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
        </providers>
    </membership>
    <roleManager defaultProvider="AspNetSqlRoleProvider">
        <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
    </roleManager>
    <siteMap defaultProvider="AspNetXmlSiteMapProvider">
        <providers>
            <add siteMapFile="web.sitemap" name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </siteMap>
    <httpModules>
        <remove name="WwwSubDomainModule"/>
        <remove name="UrlRewrite"/>
        <remove name="CompressionModule"/>
        <remove name="ReferrerModule"/>
        <remove name="SecurityModule"/>
        <remove name="RightModule"/>
    </httpModules>
    <httpHandlers>
        <remove verb="*" path="file.axd"/>
        <remove verb="*" path="image.axd"/>
        <remove verb="*" path="syndication.axd"/>
        <remove verb="*" path="sitemap.axd"/>
        <remove verb="*" path="trackback.axd"/>
        <remove verb="*" path="pingback.axd"/>
        <remove verb="*" path="opensearch.axd"/>
        <remove verb="*" path="metaweblog.axd"/>
        <remove verb="*" path="rsd.axd"/>
        <remove verb="*" path="css.axd"/>
        <remove verb="*" path="js.axd"/>
        <remove verb="*" path="res.axd"/>
        <remove verb="*" path="rating.axd"/>
        <remove verb="*" path="opml.axd"/>
        <remove verb="*" path="blogml.axd"/>
        <remove verb="*" path="sioc.axd"/>
        <remove verb="*" path="apml.axd"/>
        <remove verb="*" path="foaf*.axd"/>
        <remove verb="*" path="*.htm"/>
    </httpHandlers>
</system.web>
<system.webServer>
    <modules>
        <remove name="WwwSubDomainModule"/>
        <remove name="UrlRewrite"/>
        <remove name="CompressionModule"/>
        <remove name="ReferrerModule"/>
        <remove name="SecurityModule"/>
        <remove name="RightModule"/>
    </modules>
    <handlers>
        <remove name="FileHandler"/>
        <remove name="ImageHandler"/>
        <remove name="Syndication"/>
        <remove name="Sitemap"/>
        <remove name="Trackback"/>
        <remove name="Pingback"/>
        <remove name="OpenSearch"/>
        <remove name="MetaWeblog"/>
        <remove name="RSD"/>
        <remove name="CssHandler"/>
        <remove name="Javascript"/>
        <remove name="Resource"/>
        <remove name="Rating"/>
        <remove name="Opml"/>
        <remove name="BlogML"/>
        <remove name="SIOC"/>
        <remove name="Apml"/>
        <remove name="Foaf"/>
        <remove name="Html"/>
    </handlers>
</system.webServer>

如果你使用它并拥有更多子文件夹,则需要为每个子文件夹添加它。