Могу ли я запустить несколько сайтов в одной базе данных? - PullRequest
1 голос
/ 08 июня 2010

Я пытаюсь спланировать серию веб-сайтов, которые совместно используют многие ресурсы, такие как css / jscript / images / content и т. Д. По этой причине я хотел запустить все веб-сайты под тем же приложением и профилем IIS, но в зависимости от используемого URL измените главную страницу и тему / скин.

База данных членства ASP.NET выглядит так, как если бы она была разработана с этой целью, поскольку она позволяет настраивать несколько приложений, однако я считаю, что цель, для которой она была создана, состояла в том, чтобы позволить приложениям запускаться в виртуальных каталогах / папки, а не на отдельных URL.

Можно ли привязать URL к конкретному приложению?

Спасибо заранее Al

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Да, это возможно. В вашей конфигурации используйте applicationName для ваших провайдеров. Таким образом, все данные будут сохранены в одной базе данных, но хранятся отдельно от идентификатора приложения, который вы найдете в большинстве таблиц.

Одной из возможностей для ваших общих ресурсов может быть размещение их в одном месте, и вы можете указать на это местоположение с вашего другого сайта, используя полный URL-адрес файла в первом месте.

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

В одном приложении: web.config 1:

<roleManager enabled="true">
    <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" applicationName="/ApplicationOne"
            ...add other properties here as standard
     />
    </providers>
</roleManager>
<membership>
    <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" applicationName="/ApplicationOne"
            ...add other properties here as standard
         />
    </providers>
</membership>

В вашем другом приложении: web.config 2:

<roleManager enabled="true">
    <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" applicationName="/ApplicationTwo"
            ...add other properties here as standard
     />
    </providers>
</roleManager>
<membership>
    <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" applicationName="/ApplicationTwo"
            ... add other properties here as standard
         />
    </providers>
</membership>
0 голосов
/ 08 июня 2010

Самое простое решение - включить таблицу стилей в зависимости от того, по какому URL-адресу выполняется страница, используя:

Request.ServerVariables("SERVER_NAME")

IE (псевдо):

if Request.ServerVariables("SERVER_NAME") = "http://www.domain1.com" then
  include stylesheet1
else
  include stylesheet2
end if

Вам потребуется найти функцию для извлечения доменного имени из URL, чтобы оно работало хорошо.

...