2015-10-16 4 views
0

Я пытаюсь создать простую веб-службу на 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 пытается мне сказать. Любые советы будут оценены.

ответ

0

Вот несколько возможных идей для изучения:

Вы смотрели на разрешения для учетной записи, пул приложений в IIS использует для запуска этого? Могут быть временные файлы ASP.Net Temporary, которые не создаются, что может быть проблемой здесь.

Является ли ASP.Net зарегистрированным в IIS? Я помню, как несколько раз приходилось запускать «aspnet_regiis -i» на серверах для установки части ASP.Net, чтобы он присутствовал в IIS.

Является ли IIS настроенным для разрешения запросов ASP.Net? В диспетчере IIS на уровне машины есть «ограничения ISAPI и CGI».


Update: Может быть, вы могли бы посмотреть на конфигурации для пула приложений и посмотреть, какую версию .Net он использует и будет ли она интегрирована или классическим режимом. Это будет следующий уровень вещей для изучения.

+0

Учетная запись IIS_IUSRS имеет права на изменение, чтение и выполнение, запись и т. Д. На C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET. В диспетчере сервера проверяются .NET Extensibility 3.5 и 4.0. В диспетчере IIS папка приложения имеет сопоставления обработчиков для * .asmx Enabled. Как я должен проверить эти три предмета? – Nevo

+0

Середина, на которую я поставил бы вопрос. Откройте командную строку с правами администратора и запустите «aspnet_regiis -i» в «C: \ Windows \ Microsoft.Net \ Framework \ v4.0.30319» (или этот последний набор чисел в зависимости от того, какая версия фрейма вы хотите зарегистрировать 2.0 или 4.0) –

+0

JB, я сделал это, и aspnet_regiis сказал мне: «Эта опция не поддерживается в этой версии этой операционной системы» и направила меня по адресу http://go.microsoft.com/fwlink/?LinkID=216771. Также смотрите UPDATE в исходном сообщении. – Nevo

2

После того, как он несколько часов боролся с этим и внес изменения всех настроек, а также несколько раз удалив и переустановить IIS, я, наконец, решил это.

Мне пришлось щелкнуть правой кнопкой мыши папку, в которой я опубликовал свои файлы в диспетчере IIS и выбрать «Преобразовать в приложение». Сейчас он работает!

+0

Большое спасибо за помощь –

Смежные вопросы