Различия в поведении между 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.

Другие вопросы по тегам