Различия в поведении между IIS и сервером веб-разработки ASP.Net?
Во время разработки я обычно тестирую приложения ASP.Net, используя сервер веб-разработки (иногда называемый Cassini). Иногда, когда я публикую в реальной среде IIS, я замечаю, что приложение ведет себя по-разному.
Итак, каковы различия между поведением рабочих серверов IIS и сервера веб-разработки ASP.Net? Я не имею в виду различия в наборах функций (очевидно, что в IIS есть множество функций, которых нет в WDS), но различия в способах работы с ASP.Net.
Кстати: в ответах на этот вопрос отмечено несколько различий, но я уверен, что их должно быть больше.
2 ответа
Некоторые различия могут быть:
- Вы не можете использовать виртуальные каталоги при работе с cassini. Это может привести к неожиданному поведению при первом развертывании из-за отсутствия прав доступа к папке. (Например, у вас есть каталог / image / на вашем локальном компьютере, но в IIS /image/ это виртуальный каталог, указывающий на другое)
- Некоторые сторонние сборки (например, ComponenArt Web DLL) вызывают проблемы с определенными проблемами порта. Лучше всего разрабатывать с IIS, чтобы минимизировать проблемы совместимости при развертывании.
- Уровень доверия целевого IIS может быть ниже, чем ваши параметры разработки, это может привести к сбоям, в зависимости от того, что вы делаете с IIS, например, чтение Uptime.
Некоторые вещи, которые я подобрал здесь и в других местах:
Контекст безопасности, в котором соответствующие серверы запускают приложения ASP.NET, отличается. Для сервера Dev это учетная запись текущего пользователя. Для IIS это контекст специального пользователя (ASPNET или NETWORK SERVICES), который обычно имеет ограниченные привилегии.
Для веб-сайта Сервер разработки подвергает статические файлы (изображения, таблицы стилей и т. Д.) Авторизации ASP.NET. Однако IIS обслуживает статические файлы без использования правил авторизации.
Сервер разработки не поддерживает SMTP, поэтому вы не можете отправлять электронные письма непосредственно с этого сервера.
Сервер разработки не поддерживает HTTPS.
Существует разница в том, как два сервера обрабатывают пути, содержащие "//". Как сообщается, сервер Dev более прощающий.
Сервер Dev случайно выбирает порт, а не стандартный HTTP-порт 80.