Проблемы с публикацией веб-сайта на smarterasp.net с файлом csc.exe?
Я использую Microsoft Visual Studio 2015, я создал простой веб-сайт с формой контакта С#.
Когда я компилирую и запускаю на localhost, он отлично работает. Однако, когда я пытаюсь опубликовать его (на smarterasp.net), я получаю сообщение об ошибке:
[Win32Exception (0x80004005): доступ запрещен]
[ExternalException (0x80004005): Не удается выполнить программу. Выполняемая команда была "..\bin\roslyn\csc.exe"
Я связался с smarterasp.net, и они сказали, что не разрешают файлы .exe. Я попытался удалить csc.exe с ftp с сервера, но когда я это сделаю, я получаю сообщение об ошибке:
Не удалось найти файл "..\bin\roslyn\csc.exe".
Как я могу решить эту проблему с помощью csc.exe, который пытается попасть в мой проект, чтобы я мог опубликовать этот сайт?
Ответы
Ответ 1
После нескольких часов исследования я придумал решение.
Начиная с версии .NET 4.5, компиляция Roslyn является способом компиляции по умолчанию. Это означает, что если вы создаете любое веб-приложение либо Web Forms, либо MVC с помощью .NET 4.5, вы получаете эту сборку Roslyn csc.exe, предварительно установленную в вашем проекте.
В основном мне нужно было скомпилировать и развернуть мой проект без Roslyn или любых файлов .exe на нем.
Итак, вот решение, которое сработало для меня. Вы можете развернуть без Roslyn без изменения кода:
- Открыть окно диспетчера пакетов NuGet
- удалить пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform и перестроить и переиздавать. (Эта деинсталляция также удаляет конфигурацию CodeDom из файла web.config.)
Это решит вашу цель. В основном это не будет генерировать файлы csc.exe, vbc.exe внутри папки bin.
Я надеюсь, что это сработает и для вас!
Ответ 2
У меня была эта проблема на Smarter ASP. В диспетчере файлов браузера на панели управления перейдите в папку "Roslyn" в корзине и установите разрешение .net для чтения/записи. Он работал тогда.
Ответ 3
Если вы действительно хотите сохранить roslyn codegen, вам просто нужно установить разрешения в папке bin приложения, чтобы позволить пользователю ApplicationPool читать и выполнять.
Я сделал это, используя вкладку "Безопасность проводника" в диалоговом окне свойств папки, но вы также должны сделать что-то вроде:
icacls PATH_TO_SERVICE_BIN /grant "ApplicationPoolUser":(OI)(CI)RX
Ответ 4
Я нашел решение как снятие флажка "Разрешить предварительно скомпилированный сайт обновляться", в окне публикации.
![введите описание изображения здесь]()
Ответ 5
Просто удалите раздел кода из Web.config, это решает проблему.
Ответ 6
Только что испытал ту же проблему, что и OP при публикации ASP.net 4.5.2 SPA через веб-развертывание в VS2015.
Решение, которое я нашел для работы, это удалить пакет Nuget "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" .
Вы также можете просто удалить раздел system.codedom compiler config из файла Web.config, который будет иметь такое же влияние.
Ответ 7
Вот как я получил работу:
- На панели управления перейдите в диспетчер безопасности > Разрешить .EXE файлы.
- Задайте значение Вкл. (это позволит вам загружать файлы .exe)
-
В вашем Web.config
установите полное доверие (это позволит вам запускать их)
<configuration>
<system.web>
<trust level="Full" />
</system.web>
</configuration>
-
В настройках публикации включите "Прекомпилировать во время публикации", но в
Расширенные параметры предварительной компиляции (ссылка "Настройка" рядом с этой опцией), отключите "Разрешить предварительный скомпилированный сайт для обновления".
Ответ 8
У меня была такая же ошибка, и я решил ее, разрешив разрешения хостинга (чтение/запись/удаление).
Ответ 9
Если вам нужна SmarterAsp.Net, позволяющая загрузить файл .exe для поддержки функций и функциональных возможностей вашего сайта, вы можете. Просто зайдите на панель управления и включите "Разрешить файлы .Exe". См. Ниже:
![введите описание изображения здесь]()
В моем случае я должен был сделать это, потому что я хотел разместить веб-сайт Asp.Net Core, и для этого абсолютно необходим файл .exe: -)