Запустите ASP.NET Development Server «виртуальный путь» как приложение - PullRequest
2 голосов
/ 06 октября 2010

Я хочу запустить мое новое веб-приложение с проверкой подлинности с помощью форм на сервере ASP.NET Development WebServer (Cassini), но не в корневом каталоге сайта"/" (точнее, по пути, по которому он будет находиться в рабочей среде).; "/New").

Однако, процесс сборки выдает ошибку :

" Использование раздела, зарегистрированного как allowDefinition = ошибка«MachineToApplication» вне уровня приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS. New.MvcWeb \ obj \ debug \ csautoparameterize \ original \ web.config "

Теперь я понимаю, о чем идет речь.У меня включена аутентификация форм в моем файле web.config в виртуальном каталоге.Ошибка исчезает, когда я удаляю файл web.config или удаляю конфигурацию отладчика «виртуальный путь: / Новый», или перемещаю отладку из Cassini в IIS и вручную создаю приложение в «/New".

Ноэто всего лишь «виртуальный» каталог в сознании системы сборки.Путь IS с поддержкой приложения в настройках производственного IIS.Кроме того, если я удалю web.config, Cassini с радостью опубликует «http://localhost/New" как приложение» (например, Server.MapPath («~») возвращает каталог моего проекта без суффикса «/ New»), однако мне нужны формыв нем включена аутентификация (параметр web.config уровня приложения).

Как мне избежать этой ошибки сборки при сохранении желаемых функций?

Подробнее

Проектв настоящее время настроен для разработки сайта "файловая система". Это и Cassini, как предполагается, облегчит моим создателям контента участие в разработке и тестировании с их локальной копией VS2010, без необходимости устанавливать IIS на их ПК с Windows.также публикация одним щелчком в моем локальном IIS для тестирования, затем упаковка / публикация / развертывание в общедоступном тесте, а затем, наконец, публикация в производство. Я думаю, что Cassini является очень полезной частью всего этого процесса.

VS2010, MVC application, file-system site project

Project Settings:
 * ASP.NET 4.0
 * Use Visual Studio Development Server  
 * Virtual Path: /New

web.config snippet:
 <authentication mode="Forms">
   <forms loginUrl="~/../login.html" timeout="30"/>
 </authentication>

Ответы [ 2 ]

1 голос
/ 06 октября 2010

Как правило, я бы сказал, что приложения не должны заботиться о том, работают ли они от имени пользователя root или в подпути. Я бы также сказал, что в 2010 году, с приходом IIS Express , нет смысла тратить время и страдания на борьбу с Кассини. Это должно лучше соответствовать вашим требованиям.

РЕДАКТИРОВАТЬ БОЛЬШЕ ДЕТАЛЕЙ

Интересные обновления о IIS express. Мы делаем то же самое для наших типов дизайна - мы предпочли бы, чтобы они реализовывали проекты, а не программисты теряли часы своей жизни, преследуя отдельные пиксели. Нам показалось, что проще всего относиться к машинам проектировщиков как к агенту построения непрерывной интеграции. Они запускают IIS и строят, используя тот же сценарий компоновки командной строки, что и блоки CI. Работает на удивление хорошо. В обоих случаях у вас есть машина, которая не может заботиться о себе, поэтому все должно быть написано в сценарии. Бит IIS обычно настраивается один раз, поскольку мы делаем его довольно простым, и он редко нуждается в настройке с современными версиями .NET. Надеюсь, это поможет.

0 голосов
/ 12 октября 2010

Итак, узнав, что Кассини на самом деле выполняет пути как приложения [т.е. Server.MapPath ("~") возвращает корневую папку project , а Server.MapPath ("/") может не существовать], это действительно становится строго ошибкой сборки.

С лучшим определением проблемы, я теперь вижу, что другие люди также имеют эту ошибку в проектах MVC с MvcBuildViews и One-Click-Publish. Вот несколько статей о том, как этого избежать:

allowDefinition = 'MachineToApplication' ошибка при публикации из VS2010 (но только после предыдущей сборки)

http://connect.microsoft.com/VisualStudio/feedback/details/556312/mvcbuildviews-does-not-play-well-with-one-click-publish

...