Подтвердить что ты не робот

Проблемы с публикацией веб-сайта на 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, который пытается попасть в мой проект, чтобы я мог опубликовать этот сайт?

4b9b3361

Ответ 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: -)