Как исправить ошибку сервера (parse Error) после развертывания сайта te asp.net - PullRequest
0 голосов
/ 06 января 2019

Я загрузил свое приложение asp.net через FTP из Visual Studio, после развертывания оно вызывает время выполнения (Parse Error).

Я видел несколько постов и перепробовал много вариантов, но ни один из них не работает:

После загрузки ошибка была:

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 load type 'SimpleEchoBot.WebApiApplication'.

Source Error: 


Line 1:  <%@ Application CodeBehind="Global.asax.cs" 
Inherits="SimpleEchoBot.WebApiApplication" Language="C#" %>

Source File: /global.asax    Line: 1 

Как уже упоминалось в этом сообщении: Сообщение об ошибке синтаксического анализатора: не удалось загрузить тип 'webmarketing' , я изменил CodeBehind на CodeFile, но возникла новая ошибка о том, что asax.cs не существует!

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: The file '/Global.asax.cs' does not exist.

Source Error: 


Line 1:  <%@ Application CodeFile="Global.asax.cs" 
Inherits="SimpleEchoBot.WebApiApplication" Language="C#" %>

Source File: /global.asax    Line: 1 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET 
Version:4.7.3282.0

В то время мой файловый менеджер plesk выглядел так:

https://imgur.com/RVpHlnK.jpg

А потом я загрузил файл Global.asax.cs, и затем появилась эта ошибка:

ERROR

Как показано в этом сообщении: Ошибка синтаксического анализатора: ошибка сервера в приложении '/' Я изменил пространство имен Global.asax.cs так, чтобы оно равнялось пути наследования в asax!

Модифицированный код пространства имен в asax.cs:

https://imgur.com/59d4IJK.jpg

код в asax:

<%@ Application CodeBehind="Global.asax.cs" Inherits="SimpleEchoBot.WebApiApplication" Language="C#" %>

но, тем не менее, вышеупомянутая ошибка "Эта программа заблокирована групповой политикой" поднимается!

И я развернул такое же приложение в Azure, та же ошибка разбора, упомянутая вверху, появляется!

Ошибка сервера в «/» приложении. Ошибка парсера Описание: во время анализа ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите следующую конкретную информацию об ошибке разбора и измените исходный файл соответствующим образом.

Parser Error Message: Could not load type 'SimpleEchoBot.WebApiApplication'.

Ошибка источника:

Строка 1: <% @ Application CodeBehind = "Global.asax.cs"> Inherits = "SimpleEchoBot.WebApiApplication" Language = "C #"%>

Исходный файл: /global.asax Строка: 1

Информация о версии: Microsoft .NET Framework Версия: 4.0.30319; ASP.NET версия: 4.7.3163.0

Редактировать: По запросу jessehouwing, вот папка Bin. Скриншоты:

enter image description here enter image description here enter image description here enter image description here enter image description here

Как уже упоминалось в комментарии @jeesehouwing, я пытался предварительно скомпилировать веб-сайт и загрузить его, но во время предварительной компиляции я получил несколько ошибок:

System.AggregateException: One or more errors occurred. ---> 
System.Exception: Publish failed due to build errors. Check the error list 
for more details.
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean 
 includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, 
CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish. 
<>c__DisplayClass40_0.<PublishAsync>b__2()
   at System.Threading.Tasks.Task`1.InnerInvoke()
    at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 
task) atSystem.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)atMicrosoft.VisualStudio.ApplicationCapabilities.Publish.ViewModel.ProfileSelectorViewModel.<RunPublishTaskAsync>d__88.MoveNext()
 ---> (Inner Exception #0) System.Exception: Publish failed due to build errors. 
 Check the error list for more details.<---

1 Ответ

0 голосов
/ 06 января 2019

Похоже, что вы можете загрузить только предварительно скомпилированный веб-сайт и не можете включить компилятор Roslyn в ваше развертывание, так как он заблокирован хостом. Вы можете использовать опцию «Опубликовать профиль» в Visual Studio для настройки предварительной компиляции (и я подозреваю, что вам нужно будет выбрать «не обновляемый» вариант).

Смотри также:

Подробнее

Похоже, ваш веб-хост имеет белый список, исполняемые файлы которого разрешено запускать. Это упрочняющая практика, чтобы сделать окружающую среду более безопасной. Самые последние версии ASP.NET включают компилятор C # как часть развертывания для компиляции представлений MVC и других элементов на лету. Для этого ваше приложение поставляет исполняемый файл компилятора csc.exe вместе с вашим веб-приложением. csc.exe не был добавлен в белый список провайдером, и это блокирует динамическую перекомпиляцию Global.asax.cs.

Либо нацеливайтесь на более старую версию ASP.NET (которая не поставляется с платформой компилятора Roslyn), либо прекомпилируйте веб-сайт, чтобы он больше не зависел от наличия компилятора Roslyn.

...