【问题标题】:IIS - how to setup a standalone application in a subdirectory?IIS - 如何在子目录中设置独立应用程序?
【发布时间】:2011-08-14 09:22:13
【问题描述】:

BlogEngine.NET 设置在我的虚拟主机 (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.config,然后再将请求发送到子文件夹中的应用程序。为什么它现在找不到垃圾箱(在访问 www.mydomain.com 时工作正常),我不确定。

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

【问题讨论】:

    标签: iis blogengine.net screwturn


    【解决方案1】:

    博客引擎在您的站点上:http://blog.discountasp.net/ 子域不是根 :)

    至少您的域 DNS 记录是这样设置的。

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

    所以你需要 3 个 app_pools

    1. 对于 BE 引擎
    2. 为您的主站点 www.discountasp.net
    3. 为了您的维基

    这样做它们不会互相混淆,它们被视为 3 个完全不同的应用程序。

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

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

    【讨论】:

    • 不幸的是,我不是 DiscountASP 的所有者,他们只是托管我的域=) 单独的应用程序池会很好,但由于我是个小气鬼,只为共享托管付费,所以只能控制事情从站点级别到 IIS 中。
    【解决方案2】:

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

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

    在某些情况下,这可以通过在子目录的 web.config 中使用和标签来删除继承的东西来解决。这对我来说有点太神秘了。

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

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

    ^&
    

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

    【讨论】:

      【解决方案3】:

      我所做的是在 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>
      

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

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 1970-01-01
        • 2013-11-18
        • 2012-08-14
        • 1970-01-01
        • 2011-11-30
        • 2011-10-04
        • 2014-11-16
        • 1970-01-01
        相关资源
        最近更新 更多