Я пытаюсь создать простую веб-службу на C#, используя VS2015, которая будет размещаться на Windows Server 2012R2.IIS: сообщение об ошибке Parser: не удалось создать тип
У меня есть код написанный и он работает правильно, если он размещен в отладчике Visual Studio. Отладчик запускает IE и дает мне интерфейс для тестирования простых методов в моем коде. Я могу ввести температуру в Цельсию и вернуть температуру в Farentheit. Поэтому я понимаю, что мой код работает.
Однако, когда я публикую свой проект и попытаться загрузить его в IE, я получаю:
Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not create type 'TestAutomation.AutomationInterface'.
Source Error:
Line 1: <%@ WebService Language="C#" CodeBehind="~/App_Code/WebService.cs" Class="TestAutomation.AutomationInterface" %>
Source File: /TestToolsAutomation/AutomationInterface.asmx Line: 1
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.81.0
Я издаю мой проект, перейдя в Build -> Publish Web App. Я выбираю «Файловая система» как мой метод публикации и публикую в «C: \ inetpub \ wwwroot \ MyAppName» в конфигурации Debug без флажков в параметрах публикации файла. Когда я публикую, у меня есть следующие файлы в папке MyAppName:
-AutomationInterface.asmx
-Web.config
\App_Code
WebService.cs
Очевидная проблема, которую я вижу в том, что нет .dll файл, созданный с моим скомпилированного кода. Я далек от эксперта IIS, но разве это не должно создаваться при первом запросе страницы?
Затем я повторно опубликовал и проверил «Прекомпиляцию во время публикации» в параметрах файла. Когда я это делаю, папка \ bin создается с файлами «App_Code.compiled» и «App_Code.dll». Однако я получаю ту же ошибку в браузере.
Поскольку мой код работает в отладчике VS, но не при размещении в IIS, я подозреваю, что проблема связана с IIS, но я не на 100% уверен в этом.
Когда я запрашиваю страницу IIS в IE, я получаю событие 1310 с источником «ASP.NET 4.0.3.30319.0» в журнале событий приложения, в котором говорится: «Код события: 3006 Сообщение о событии: ошибка парсера произошел »вместе со трассировкой стека, которая показывает кучу функций System.Web.Compilation.
Я искал эту ошибку в Stack Overflow и других сайтах, но ни одно из предлагаемых решений не решило мою конкретную проблему.
Я был бы признателен за любую помощь, которую может предложить сообщество.
ОБНОВЛЕНИЕ: Я включил провальную трассировку запроса на сервере. Похоже, что здесь произошла ошибка:
154. view trace
Warning
-MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName
ManagedPipelineHandler
Notification
MAP_REQUEST_HANDLER
HttpStatus
500
HttpReason
Internal Server Error
HttpSubStatus
0
ErrorCode
The operation completed successfully.
(0x0)
ConfigExceptionInfo
ManagedPipelineHandler
Мне не хватает фона, чтобы полностью понять, что IIS пытается мне сказать. Любые советы будут оценены.
Учетная запись IIS_IUSRS имеет права на изменение, чтение и выполнение, запись и т. Д. На C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET. В диспетчере сервера проверяются .NET Extensibility 3.5 и 4.0. В диспетчере IIS папка приложения имеет сопоставления обработчиков для * .asmx Enabled. Как я должен проверить эти три предмета? – Nevo
Середина, на которую я поставил бы вопрос. Откройте командную строку с правами администратора и запустите «aspnet_regiis -i» в «C: \ Windows \ Microsoft.Net \ Framework \ v4.0.30319» (или этот последний набор чисел в зависимости от того, какая версия фрейма вы хотите зарегистрировать 2.0 или 4.0) –
JB, я сделал это, и aspnet_regiis сказал мне: «Эта опция не поддерживается в этой версии этой операционной системы» и направила меня по адресу http://go.microsoft.com/fwlink/?LinkID=216771. Также смотрите UPDATE в исходном сообщении. – Nevo