0

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 时工作正常),我不确定。

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

4

3 回答 3

0

博客引擎在您的网站上: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,则不确定是否需要这样做。

于 2011-08-14T23:21:28.073 回答
0

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

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

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

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

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

^&

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

于 2011-08-15T07:28:45.813 回答
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>

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

于 2011-09-06T09:46:05.073 回答