IIS - как настроить автономное приложение в подкаталоге? - PullRequest
0 голосов
/ 14 августа 2011

BlogEngine.NET настроен в корневом каталоге моего веб-хостинга (DiscountASP.NET).Я пытаюсь настроить личную вики в подкаталоге (www.mydomain.com/wiki).

Папка вики настроена как веб-приложение в IIS.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), я не уверен.

Как я могу настроить приложение подпапки, чтобы оно не зависело от приложения, установленного в корнепапка

Ответы [ 3 ]

0 голосов
/ 15 августа 2011

Выводы после прочтения: Прежде всего, если у вас есть контроль над всеми IIS, должно быть легко настроить приложение в подкаталоге через пулы приложений и виртуальные каталоги.

Проблема с выполнениемэто без виртуальных каталогов, и просто поместить его в подкаталог в физической файловой системе, это то, что web.config в подкаталоге будет наследоваться от web.config в корневом каталоге.

В некоторых случаях это можно решить с помощью тегов и в файле web.config в подкаталоге для удаления унаследованных вещей.На мой вкус это было слишком загадочно.

Один из способов обойти это - поместить все приложения в отдельные подкаталоги (/ blog / wiki и т. Д.), А затем использовать перезапись URL-адреса для приложения, которое вы хотите разместить в корневом каталоге.В моем случае я использовал правила:

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

и

^&

для указания на / blog (добавление исходной строки запроса).

0 голосов
/ 06 сентября 2011

Я добавил тег местоположения в конце файла web.config для BlogEngen.Net, который удалил настройки для подпапки.

<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>

Если вы используете это и имеете больше подпапок, вам нужно добавить его для каждой из них.

0 голосов
/ 15 августа 2011

Blog Engine на вашем сайте: http://blog.discountasp.net/ поддомен не root:)

Ну, по крайней мере, записи DNS вашего домена настроены таким образом.

Нужен отдельный app_pool, который является волшебством, чтобы БЫЛА хорошо играла с другими:)

Так что вам нужно 3 app_pools

  1. для двигателя BE
  2. Для вашего основного сайта www.discountasp.net
  3. Для вашей вики

Делая это, они не будут связываться друг с другом, они рассматриваются как 3 совершенно разных приложения.

В вашем главном "Root" web.config убедитесь, что он установлен для разрешения web.config в подпапках.

Но, не уверен, нужно ли это, если у вас есть собственные app_pools.

...