2009-04-23 4 views
11

Можно ли полностью отменить web.config в подпапках?Можно ли полностью отменить «более высокий» web.config в подпапке?

Очевидно, что у меня есть web.config в корне.

Если у меня есть подпапка под названием «MyApp», могу ли я написать там кучу кода и запустить ее без ссылки на web.config у root? Он будет иметь свой собственный web.config и даже не будет ссылаться на «более высокий» web.config в корне.

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

Я знаю, что могу использовать «чистый» элемент, но это лучший способ? Просто введите «ясный» под каждый элемент верхнего уровня? Просто интересно, есть ли другой способ.

Дубликат Will a child application inherit from its parent web.config?

+1

Это не дубликат. –

ответ

1

Да, вы должны очистить эти разделы, чтобы их можно было переопределить. Размышляя об этом немного больше, это имеет смысл, так как единственный способ очистить все может сильно затруднить работу над тем, что нужно очистить. Clear обычно сбрасывает все, включая корневые web.configs в файлах web.configs и machine.config, определенных в папке frameworks/config на вашем сервере.

Обратите внимание, что вы также потеряете доступ к папке/bin, папке/app_code и т. Д. Это может быть или не быть тем, что вы хотите.

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

+0

«не будет знать о родительском приложении, и это не является web.config [...]» - я не думаю, что это правда. Вы можете получить доступ к appSettings из родительской веб-конфигурации, модули все еще применяются и т. Д. На самом деле мне пришлось явно «удалить» модули из более высоких web.configs. – Deane

+0

Хм, хорошо, я только что проверил это, и ты прав. Это новость для меня, я скоро уточню свой ответ. –

+0

Ваше объяснение, почему вы не можете полностью отказаться от более высоких параметров web.configs, имеет смысл - например, есть вещи на уровне machine.config и заставляют веб-сервер идти, поэтому вам нужно их выборочно очистить. – Deane

1

№ В дизайном для хостинга и ради простоты.

IIS7 немного изменил это, разрешив явно блокировать/разблокировать конфиги.

1

Это похоже на то, что вы должны создать виртуальный каталог, который является другим корнем приложения.

9

О файле web.config в корневом каталоге, оберните <system.web> элемент со следующим элементом: <location path="." inheritInChildApplications="false"></location>

Проверить эту ссылку для справки:

http://www.jaylee.org/post/2008/03/Prevent-ASPNET-webconfig-inheritance-and-inheritInChildApplications-attribute.aspx

+0

Большое спасибо за этот совет, Джо. Это действительно помогло мне! –

0

Я просто столкнулись с этой проблемой в моей работе, и моим решением было создать новый веб-сайт, вместо того чтобы пытаться вложить мое приложение в существующий веб-сайт. Я сохранил доменное сопоставление для нового приложения (т. Е. Www.mysite.com), но изменил номер порта/сопоставление.

В результате я могу использовать свое новое приложение на сайте www.mysite.com:88 и не нужно использовать субдомен.

Предостережение здесь заключается в том, что мое приложение является веб-службой, поэтому мне нужно указать номер порта в URL-адресе. Возможно, это не вариант для вас, но я думал, что отправлю это сообщение, это поможет кому-то в моей ситуации.

Решение <location path="." inheritInChildApplications="false"></location> не было возможным для меня, поскольку inheritInChildApplications, похоже, не существует до ASP.Net Framework 4.0?