ASP.NET веб-развертывание с помощью Visual Studio: устранение неполадок

Том Дайкстра

Скачивание начального проекта

В этом руководстве показано, как развернуть (опубликовать) веб-приложение ASP.NET в веб-приложениях Службы приложений Azure или в стороннем поставщике услуг размещения с помощью Visual Studio 2012 или Visual Studio 2010. Сведения о серии см. в первом руководстве в серии.

На этой странице описываются некоторые распространенные проблемы, которые могут возникнуть при развертывании веб-приложения ASP.NET с помощью Visual Studio. Для каждой из них предоставляются один или несколько возможных причин и соответствующих решений.

Приведенные сценарии применяются как к поставщикам размещения Azure, так и к сторонним поставщикам услуг размещения. Дополнительные сведения об устранении неполадок веб-приложений в Службе приложений Azure см. в следующих ресурсах:

Ошибка сервера в приложении "/" — текущие настраиваемые параметры ошибок препятствуют удаленному просмотру ошибки

Сценарий

После развертывания сайта на удаленном узле вы получите сообщение об ошибке, которое упоминает параметр customErrors в файле Web.config, но не указывает, какая фактическая причина ошибки:

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom error settings 
for this application prevent the details of the application error from being viewed remotely 
(for security reasons). It could, however, be viewed by browsers running on the local server 
machine. 

Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".

Возможные причины и решение

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

Чтобы приложение отображало подробные сообщения об ошибках при запуске на удаленном узле, измените файл Web.config, чтобы установить режим customErrors в значение 'выключено', повторно разверните приложение и вновь запустите его.

  1. Если в файле приложения Web.config есть элемент customErrors в элементе system.web, измените атрибут mode на "off". В противном случае добавьте элемент customErrors в элемент system.web с атрибутом режима, равным off, как показано в следующем примере:

    <configuration>
      <system.web>
        <customErrors mode="off"/>
      </system.web>
    </configuration>
    
  2. Разверните приложение.

  3. Запустите приложение и повторите все, что вы сделали ранее, что привело к возникновению ошибки. Теперь вы увидите, что такое фактическое сообщение об ошибке.

  4. После устранения ошибки восстановите исходный параметр customErrors и повторно разверните приложение.

Не удается создать или сделать теневую копию 'ContosoUniversity', так как этот файл уже существует.

Сценарий

При попытке запустить проект в Visual Studio вы получите страницу ошибок с сообщением, как показано в следующем примере:

Ошибка сервера в приложении "/". Невозможно создать копию или выполнить теневое копирование 'ContosoUniversity', когда этот файл уже существует.

Возможные причины и решение

Подождите минуту и обновите браузер или перекомпилируйте сайт и повторите попытку.

Доступ запрещен на веб-странице, в которую используется SQL Server Compact

Сценарий

При развертывании сайта, использующего SQL Server Compact, и вы запускаете страницу на развернутом сайте, который обращается к базе данных, вы увидите следующее сообщение об ошибке:

Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Возможные причины и решение

Учетная запись NETWORK SERVICE на сервере должна иметь возможность читать собственные двоичные файлы SQL Service Compact, которые находятся в папке bin\amd64 или bin\x86 , но у нее нет разрешений на чтение для этих папок. Задайте разрешение на чтение для NETWORK SERVICE в папке bin , обязательно расширяя разрешения на вложенные папки.

Не удается прочитать файл конфигурации из-за нехватки разрешений

Сценарий

При нажатии кнопки публикации Visual Studio для развертывания приложения в IIS на локальном компьютере происходит сбой публикации, а в окне вывода отображается сообщение об ошибке, аналогичное следующему:

При чтении файла конфигурации IIS "MACHINE/REDIRECTION" произошла ошибка. Удостоверение, выполняющее эту операцию, было ... Ошибка: Не удается прочитать файл конфигурации из-за недостаточных прав.

Возможные причины и решение

Чтобы использовать однокликовую публикацию в IIS на локальном компьютере, необходимо запускать Visual Studio с правами администратора. Закройте Visual Studio и перезапустите его с разрешениями администратора.

Не удалось подключиться к конечному компьютеру ... с использованием указанного процесса

Сценарий

При нажатии кнопки публикации Visual Studio для развертывания приложения публикация завершается ошибкой, а в окне вывода отображается сообщение об ошибке, аналогичное следующему:

Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server. 
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.

Возможные причины и решение

Прокси-сервер прерывает взаимодействие с конечным сервером. На панели управления Windows или в Internet Explorer выберите " Параметры браузера" и перейдите на вкладку "Подключения ". В диалоговом окне "Свойства Интернета" щелкните "Параметры локальной сети". В диалоговом окне "Параметры локальной сети" снимите флажок "Автоматически обнаруживать параметры ". Затем снова нажмите кнопку публикации.

Если проблема сохранится, обратитесь к системному администратору, чтобы определить, что можно сделать с параметрами прокси-сервера или брандмауэра. Проблема возникает из-за того, что веб-развертывание использует не стандартный порт для развертывания веб-службы управления (8172); для других подключений веб-развертывание использует порт 80. При развертывании в стороннем поставщике услуг размещения обычно используется служба веб-управления.

Пул приложений .NET 4.0 по умолчанию не существует

Сценарий

При развертывании приложения, требующего .NET Framework 4, отображается следующее сообщение об ошибке:

Пул приложений .NET 4.0 по умолчанию не существует или не удалось добавить приложение. Убедитесь, что на этом компьютере установлен ASP.NET 4.0.

Возможные причины и решение

ASP.NET 4 не установлен в службах IIS. Если сервер, на который вы разворачиваете, является вашим компьютером разработки и на нем установлен Visual Studio 2010, то ASP.NET 4 установлен на компьютере, но может не быть установлен в IIS. На сервере, на котором выполняется развертывание, откройте командную строку с повышенными привилегиями и установите ASP.NET 4 в IIS, выполнив следующие команды:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

Также может потребоваться вручную задать версию пула приложений по умолчанию .NET Framework. Для получения дополнительной информации см. руководство по развертыванию в среде IIS как тестовой среды в этой серии.

Формат строки инициализации не соответствует спецификации, начиная с индекса 0.

Сценарий

После развертывания приложения с помощью публикации с помощью одного щелчка мыши при запуске страницы, которая обращается к базе данных, вы получите следующее сообщение об ошибке:

Формат строки инициализации не соответствует спецификации, начиная с индекса 0.

Возможные причины и решение

Откройте файл Web.config на развернутом сайте, и проверьте, чтобы значения строки подключения начинались с $(ReplaceableToken_, как показано в следующем примере:

<connectionStrings>
  <add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
  <add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

Если строки подключения выглядят следующим образом, измените файл проекта и добавьте следующее свойство в элемент PropertyGroup, который предназначен для всех конфигураций сборки:

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

Затем повторно разверните приложение.

Ошибка внутреннего сервера HTTP 500

Сценарий

При запуске развернутого сайта отображается следующее сообщение об ошибке без определенных сведений, указывающих на причину ошибки:

Ошибка HTTP 500 — внутренняя ошибка сервера.

Возможные причины и решение

Существует множество причин 500 ошибок, но одна из возможных причин, если вы используете эти учебники, заключается в том, что вы помещаете XML-элемент в неправильное место в одном из файлов преобразования Web.config. Например, вы получите эту ошибку, если вставите элемент <расположения> под <system.web> вместо того, чтобы вставить его непосредственно под <конфигурацию>. Вы можете использовать функцию предварительного просмотра Web.config преобразования, чтобы убедиться, что преобразования работают должным образом. Решение, если вы нашли преобразование, закодированное неправильно, заключается в исправлении файла преобразования и повторного развертывания. Если ошибка не очевидна, попробуйте временно отключить преобразования и тем временем разверните приложение заново, чтобы увидеть, какое из них вызывает ошибку 500.

Ошибка внутреннего сервера HTTP 500.21

Сценарий

При запуске развернутого сайта отображается следующее сообщение об ошибке:

Ошибка HTTP 500.21 — внутренняя ошибка сервера. Обработчик PageHandlerFactory-Integrated имеет неправильный модуль ManagedPipelineHandler в списке модулей.

Возможные причины и решение

Развернутый вами сайт предназначен для ASP.NET 4, но ASP.NET 4 не зарегистрирован в IIS на сервере. На сервере откройте командную строку с повышенными привилегиями и зарегистрируйте ASP.NET 4, выполнив следующие команды:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

Также может потребоваться вручную задать версию пула приложений по умолчанию .NET Framework. Дополнительные сведения см. в руководстве по развертыванию в IIS в качестве тестовой среды в этой серии.

Ошибка входа при открытии базы данных SQL Server Express в App_Data

Сценарий

Вы обновили строку подключения к файлуWeb.config, чтобы указать базу данных SQL Server Express в виде файла .mdf в папке App_Data, и при первом запуске приложения появится следующее сообщение об ошибке:

System.Data.SqlClient.SqlException: не удается открыть базу данных "DatabaseName", запрошенную входом. Вход не удался.

Возможные причины и решение

Имя файла .mdf не может совпадать с именем любой базы данных SQL Server Express, которая когда-либо существовала на компьютере, даже если вы удалили файл .mdf ранее существующей базы данных. Измените имя файла .mdf на имя, которое никогда не использовалось в качестве имени базы данных и измените файл Web.config , чтобы использовать новое имя. В качестве альтернативы можно использовать SQL Server Management Studio Express для удаления ранее существующих баз данных SQL Server Express.

Не удается проверить совместимость моделей

Сценарий

Вы обновили строку подключения к файлуWeb.config , чтобы указать на новую базу данных SQL Server Express, и при первом запуске приложения появится следующее сообщение об ошибке:

Невозможно проверить совместимость моделей, так как база данных не содержит метаданные модели. Убедитесь, что IncludeMetadataConvention добавлен в набор соглашений DbModelBuilder.

Возможные причины и решение

Если имя базы данных, которое вы положили в файл Web.config, когда-либо использовалось на компьютере, база данных может уже существовать с некоторыми таблицами в нем. Выберите новое имя, которое не было использовано на компьютере, и измените файл Web.config , чтобы указать на использование этого нового имени базы данных. В качестве альтернативы можно использовать служебную программу SQL Server Express или SQL Server Management Studio Express для удаления существующей базы данных.

Ошибка SQL при попытке создания пользователей или ролей скрипта

Сценарий

Вы используете развертывание базы данных, настроенное на вкладке "Пакет или публикация SQL ", скрипты SQL, выполняемые во время развертывания, включают команды создания пользователя или создания ролей, а выполнение скрипта завершается сбоем при выполнении этих команд. Вы можете увидеть более подробные сообщения, например следующие:

The approximate location of the error was between lines '1' and '3' of the script. 
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.

Если эта ошибка возникает при настройке развертывания базы данных в мастере Publish Web, а не на вкладке Package/Publish SQL, создайте поток на форуме по настройке и развертыванию, а решение будет добавлено на эту страницу устранения неполадок.

Возможные причины и решение

Учетная запись пользователя, используемая для выполнения развертывания, не имеет разрешения на создание пользователей или ролей. Например, хостинговая компания может назначить роли db_datareader, db_datawriter и db_ddladmin учетной записи пользователя, предоставленной вами. Это достаточно для создания большинства объектов базы данных, но не для создания пользователей или ролей. Один из способов избежать ошибки заключается в исключении пользователей и ролей из развертывания базы данных. Это можно сделать, изменив элемент PreSource для автоматически созданного скрипта базы данных, чтобы он включает следующие атрибуты:

CopyAllUsers=false, CopyAllRoles=false

Сведения об изменении элемента PreSource в файле проекта см. в разделе "Практическое руководство. Изменение параметров развертывания" в файле проекта. Если пользователи или роли в базе данных разработки должны находиться в целевой базе данных, обратитесь к поставщику услуг размещения за помощью.

Ошибка времени ожидания SQL Server при выполнении пользовательских скриптов во время развертывания

Сценарий

Вы указали пользовательские скрипты SQL для выполнения во время развертывания, и когда веб-развертывание запускает их, они истекают.

Возможные причины и решение

Запуск нескольких скриптов с различными режимами транзакций может привести к ошибкам тайм-аута. По умолчанию автоматически созданные скрипты выполняются в транзакции, но пользовательские скрипты не выполняются. Если выбрать параметр Извлечь данные и/или схему из существующей базы данных на вкладке Пакет/Публикация SQL, и если добавлен пользовательский скрипт SQL, необходимо изменить настройки транзакций в некоторых скриптах, чтобы все скрипты использовали одинаковые настройки транзакций. Дополнительные сведения см. в статье "Практическое руководство. Развертывание базы данных с помощью проекта веб-приложения".

Если вы настроили параметры транзакции таким образом, чтобы все они были одинаковыми, но по-прежнему получают эту ошибку, возможный обходной путь заключается в выполнении скриптов отдельно. В сетке "Скрипты базы данных " на вкладке "Пакет или публикация SQL" снимите флажок "Включить " для скрипта, вызывающего ошибку времени ожидания, а затем опубликуйте проект. Затем вернитесь в сетку сценариев базы данных , установите флажок "Включить " этого скрипта и снимите флажки "Включить " для других сценариев. Затем снова опубликуйте проект. На этот раз при публикации выполняется только выбранный пользовательский скрипт.

Потоковые данные манифеста сайта пока недоступны

Сценарий

При установке пакета с помощью файла deploy.cmd с параметром t (test) отображается следующее сообщение об ошибке:

Ошибка: потоковые данные sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript пока недоступны.

Возможные причины и решение

Сообщение об ошибке означает, что команда не может создать тестовый отчет. Однако команда может выполняться, если вы используете параметр y (фактическая установка). Сообщение указывает только на то, что возникла проблема с выполнением команды в тестовом режиме.

Для этого приложения требуется ManagedRuntimeVersion версии 4.0

Сценарий

При попытке развертывания вы видите следующее сообщение об ошибке:

Пул приложений, который вы пытаетесь использовать, имеет свойство managedRuntimeVersion с значением "v2.0". Для этого приложения требуется версия 4.0.

Возможные причины и решение

ASP.NET 4 не установлен в службах IIS. Если сервер, на который вы разворачиваете, является вашим компьютером разработки и на нем установлен Visual Studio 2010, то ASP.NET 4 установлен на компьютере, но может не быть установлен в IIS. На сервере, на котором выполняется развертывание, откройте командную строку с повышенными привилегиями и установите ASP.NET 4 в IIS, выполнив следующие команды:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i

Не удалось преобразовать Microsoft.Web.Deployment.DeploymentProviderOptions

Сценарий

При развертывании пакета отображается следующее сообщение об ошибке:

Не удалось привести объект типа 'Microsoft.Web.Deployment.DeploymentProviderOptions' к 'Microsoft.Web.Deployment.DeploymentProviderOptions'.

Возможные причины и решение

Вы пытаетесь развернуть из диспетчера IIS с помощью пользовательского интерфейса веб-развертывания 1.1 на сервере с установленным веб-развертыванием 2.0. Если вы используете средство удаленного администрирования IIS для развертывания путем импорта пакета, проверьте диалоговое окно «Новые функции доступны» при установлении соединения. (Это диалоговое окно может отображаться только один раз при первом установке подключения. Чтобы очистить подключение и начать работу, закройте диспетчер IIS и снова запустите его, введя inetmgr /reset в командной строке.) Если один из перечисленных компонентов — пользовательский интерфейс веб-развертывания, а номер версии ниже 8, развернутый сервер может иметь как 1.1, так и 2.0 версии веб-развертывания. Чтобы развернуть с клиента, на котором установлена версия 2.0, на сервере должна быть установлена только Web Deploy 2.0. Чтобы устранить эту проблему, вам придется обратиться к поставщику услуг размещения.

Не удалось загрузить собственные компоненты SQL Server Compact

Сценарий

При запуске развернутого сайта отображается следующее сообщение об ошибке:

Не удалось загрузить собственные компоненты SQL Server Compact, соответствующие поставщику ADO.NET версии 8482. Установите правильную версию SQL Server Compact. Дополнительные сведения см. в статье базы знаний 974247.

Возможные причины и решение

Развернутый сайт не содержит подкаталогов amd64 и x86 с собственными сборками под папкой bin приложения. На компьютере с установленным SQL Server Compact собственные сборки находятся в папке C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private. Лучший способ получить правильные файлы в правильные папки в проекте Visual Studio — установить пакет NuGet SqlServerCompact. Установка пакета добавляет скрипт после сборки для копирования собственных сборок в amd64 и x86. Однако для развертывания этих элементов необходимо вручную включить их в проект. Дополнительные сведения см. в руководстве по развертыванию SQL Server Compact .

Ошибка "Путь недопустим" после развертывания приложения Entity Framework Code First

Сценарий

Вы развертываете приложение, в котором используются миграции Entity Framework Code First Migrations и СУБД, например SQL Server Compact, которая хранит базу данных в файле в папке App_Data. Вы настроили Code First Migrations для создания базы данных в процессе первого развертывания. При запуске приложения вы получите сообщение об ошибке, как показано в следующем примере:

Указанный путь недействителен. Проверьте каталог для базы данных. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

Возможные причины и решение

Сначала код пытается создать базу данных, но папка App_Data не существует. При развертывании у вас нет файлов в папке App_Data или вы выбрали исключение App_Data на вкладке "Веб-пакет или публикация" окна "Свойства проекта". Процесс развертывания не создаст папку на сервере, если на сервере нет файлов в папке, которую нужно скопировать на сервер. Если на сайте уже настроена база данных, процесс развертывания удаляет файлы и саму папку App_Data , если выбрано удалить дополнительные файлы в целевом профиле публикации. Чтобы решить проблему, поместите в папку App_Data файл-заполнитель, такой как .txt, убедитесь, что у вас не выбрано исключение Exclude App_Data, и выполните повторное развертывание.

COM-объект, который был отделён от своего базового RCW, нельзя использовать.

Сценарий

Вы успешно использовали одну кнопку "Опубликовать" для развертывания приложения, а затем начинаете получать эту ошибку:

Сбой задачи развёртывания веб-приложения. (Не удалось завершить запрос на URL-адрес удаленного агента '<https://serverurl.com/msdeploy.axd?site=sitename>'.)
Не удалось завершить запрос на URL-адрес удаленного агента "<https://url/msdeploy.axd?site=sitename>".
Запрос был прерван: запрос был отменен.
COM-объект, отсоединённый от базового RCW, нельзя использовать.

Возможные причины и решение

Закрытие и перезапуск Visual Studio обычно все, что необходимо для устранения этой ошибки.

Сбой развертывания из-за отсутствия у учетных данных пользователя, используемых для публикации, полномочий на установку ACL.

Сценарий

Публикация завершается ошибкой, указывающей на то, что у вас нет полномочий для настройки разрешений папки (учетная запись пользователя, которую вы используете, не имеет полномочий setACL).

Возможные причины и решение

По умолчанию Visual Studio задает разрешения на чтение в корневой папке сайта и разрешения на запись в папке App_Data. Если вы знаете, что разрешения по умолчанию для папок сайта правильные и их не нужно задавать, отключите это поведение, добавив <IncludeSetACLProviderOnDestination>False</IncludeSetACLProviderOnDestination> в файл профиля публикации (чтобы это повлияло на один профиль) или в файл wpp.targets (чтобы это повлияло на все профили). Сведения о том, как редактировать эти файлы, см. в разделе "Практическое руководство. Изменение параметров развертывания в файлах профиля (PUBXML).

Ошибки с отказом в доступе при попытке приложения записать в папку приложения

Сценарий

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

Возможные причины и решение

По умолчанию Visual Studio задает разрешения на чтение в корневой папке сайта и разрешения на запись в папке App_Data. Если приложению нужен доступ на запись в вложенную папку, можно задать разрешения для этой папки, как показано в руководстве по настройке разрешений папки и развертыванию в рабочей среде в этой серии. Если вашему приложению нужен доступ на запись к корневой папке сайта, необходимо предотвратить установку доступа только для чтения для корневой папки, добавив <IncludeSetACLProviderOnDestination>False</IncludeSetACLProviderOnDestination> в файл профиля публикации (чтобы повлиять на один профиль) или в файл wpp.targets (чтобы повлиять на все профили). Сведения о том, как редактировать эти файлы, см. в разделе "Практическое руководство. Изменение параметров развертывания в файлах профиля (PUBXML).

Ошибка конфигурации — атрибут targetFramework ссылается на версию, которая позже установленной версии .NET Framework

Сценарий

Вы успешно опубликовали веб-проект, предназначенный для ASP.NET 4.5, но при запуске приложения (с пользовательским режимом ошибок, установленным в значение "off" в файле Web.config), вы получите следующую ошибку:

Атрибут targetFramework в <элементе компиляции> файла Web.config используется только для целевой версии 4.0 и более поздних версий платформы .NET Framework (например, "<компиляция targetFramework="4.0">). Атрибут targetFramework в настоящее время ссылается на версию, которая позже установленной версии .NET Framework. Укажите допустимую целевую версию .NET Framework или установите требуемую версию .NET Framework.

Поле "Исходная ошибка" страницы ошибки выделяет следующую строку из Web.config в качестве причины ошибки:

<компиляция targetFramework="4.5" />

Возможные причины и решение

Сервер не поддерживает ASP.NET 4.5. Обратитесь к поставщику услуг размещения, чтобы определить, когда можно добавить поддержку ASP.NET 4.5. Если обновление сервера не является вариантом, необходимо развернуть веб-проект, предназначенный для ASP.NET 4 или более ранних версий.

При развертывании веб-проекта ASP.NET 4 или более ранних версий в то же место установите флажок "Удалить дополнительные файлы в месте назначения" на вкладке "Параметры" мастера публикации. Если вы не выберете "Удалить дополнительные файлы в месте назначения", вы будете продолжать получать страницу "Ошибка конфигурации".

Окна свойств проекта включают раскрывающийся список целевой платформы, но эту проблему невозможно устранить, просто изменив ее с .NET Framework 4.5 на .NET Framework 4. Если вы измените целевую платформу на более раннюю версию платформы, проект по-прежнему будет иметь ссылки на сборки более поздней версии платформы и не будет выполняться. Необходимо вручную изменить эти ссылки или создать проект, предназначенный для .NET Framework 4 или более ранней версии. Дополнительные сведения см. в статье .NET Framework Targeting for Web Sites.

Ошибки среднего уровня доверия

Сценарий

При запуске приложения в рабочей среде оно получает ошибку, связанную с Medium Trust.

Возможные причины и решение

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

Вы можете настроить приложение для запуска в среднем доверии в локальной среде IIS, чтобы устранить неполадки. Для этого откройте файл приложенияWeb.config и добавьте элемент доверия в элемент system.web , как показано в этом примере.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

Теперь приложение будет работать в режиме среднего уровня доверия в IIS даже на локальном компьютере.

Не выполняйте это, если вы развертываете службу приложений Azure, так как Azure не требует среднего доверия. На момент написания этого руководства в феврале 2012 года, использование этого метода для выполнения приложения со средним уровнем доверия приведет к ошибке в Azure.

Если вы используете Entity Framework Code First Migrations и развертываете ваше приложение у провайдера хостинга, который запускает его с средним уровнем доверия, убедитесь, что у вас установлена версия 5.0 или более поздняя. В Entity Framework версии 4.3 миграция требует полного доверия для обновления схемы базы данных.

Ошибка HTTP 404.17: Не найдено

Сценарий

При запуске развернутого сайта на компьютере разработки в IIS отображается следующее сообщение об ошибке, сообщающее, что сервер не может обработать Default.aspx:

Ошибка HTTP 404.17 — не найдена

Запрошенный контент, как представляется, скрипт и не будет обслуживаться статическим обработчиком файлов.

Возможные причины и решение

ASP.NET 4.5 может не быть установлен на компьютере. См. шаги в руководстве по развертыванию в IIS как тестовой среды из этой серии, объясняющем, как установить ASP.NET 4.5.