csc.exe 파일이 포함된 smarterasp.net 에 웹사이트를 게시하는 데 문제가 있습니까?
저는 Microsoft Visual Studio 2015를 사용하고 있으며, C# 연락처 양식으로 간단한 웹사이트를 만들었습니다.로컬 호스트에서 컴파일하고 실행하면 완벽하게 작동합니다.그러나 (smarterasp.net 에) 게시하려고 하면 다음 오류가 발생합니다.
[Win32Exception(0x80004005):액세스 거부]
[외부 예외(0x80004005):프로그램을 실행할 수 없습니다.실행 중인 명령은 "...\bin\roslyn\csc.exe"
smarterasp.net 에 연락해보니 .exe 파일은 허용되지 않는다고 합니다.서버에서 ftp로 csc.exe를 삭제하려고 했는데 삭제하면 다음 오류가 발생합니다.
파일을 찾을 수 없습니다.\bin\roslyn\csc.exe".
이 웹 사이트를 게시할 수 있도록 프로젝트에 포함하려는 csc.exe로 이 문제를 해결하려면 어떻게 해야 합니까?
몇 시간 동안 조사한 끝에 해결책을 생각해 냈습니다.
그때부터.NET 4.5 버전, 로슬린 컴파일은 기본 컴파일 방식입니다.이는 웹 양식 또는 MVC를 사용하여 웹 응용프로그램을 만들 경우를 의미합니다.NET 4.5 프로젝트에 이 Roslyn csc.exe 컴파일을 미리 설치할 수 있습니다.
기본적으로 제가 필요로 했던 것은 로슬린이나 그 위에 있는 .exe 파일 없이 제 프로젝트를 컴파일하고 배포하는 것이었습니다.
여기에 제게 도움이 된 솔루션이 있습니다.코드 변경 없이 로슬린 없이 배포할 수 있습니다.
- NuGet Package Manager 창 열기
- Microsoft를 제거합니다.코드 돔.공급자.DotNetCompilerPlatform 패키지 및 rebuild & republish.(이 제거는 web.config 파일에서 CodeDom 구성도 제거합니다.)
이렇게 하면 목적이 해결됩니다.기본적으로 bin 폴더 안에 csc.exe, vbc.exe 파일은 생성되지 않습니다.
당신에게도 효과가 있기를 바랍니다!
Smarter ASP에서 이 문제가 발생했습니다.제어판의 브라우저 파일 관리자에서 빈의 '로슬린' 폴더로 이동하여 읽기/쓰기 권한을 .net으로 설정합니다.그때는 잘 됐어요.
Roslyn codegen을 실제로 유지하려면 ApplicationPool 사용자가 Read & Execute를 사용할 수 있도록 응용 프로그램의 bin 폴더에 권한을 설정하기만 하면 됩니다.
폴더 속성 대화상자의 탐색기 보안 탭을 사용하여 이 작업을 수행했지만 다음과 같은 작업도 수행할 수 있습니다.
icacls PATH_TO_SERVICE_BIN /grant "ApplicationPoolUser":(OI)(CI)RX
게시 창에서 "사전 컴파일된 사이트를 업데이트 가능하도록 허용"을 선택 취소하는 것으로 해결 방법을 찾았습니다.
Web.config에서 codem 섹션만 제거하면 문제가 해결됩니다.
액세스 권한만 설정하면 됩니다./bin
t t합니다를 시작합니다.
VS2015에서 웹 배포를 통해 ASP.net 4.5.2 SPA를 게시할 때 OP와 동일한 문제가 발생했습니다.
제가 찾은 해결책은 누젯 패키지 "마이크로소프트"를 제거하는 것이었습니다.코드 돔.공급자.DotNetCompiler Platform".
또는 Web.config 파일에서 system.codom compiler config 섹션을 제거할 수도 있습니다. 이는 동일한 영향을 미칩니다.
이렇게 작동하게 되었습니다.
- 제어판에서 Security Manager > Allow(보안 관리자)로 이동합니다.EXE 파일
- 값을 On으로 설정합니다(이렇게 하면 .exe 파일을 업로드할 수 있습니다).
의 에
Web.config
, 전체 신뢰를 설정합니다(이렇게 하면 실행할 수 있습니다).<configuration> <system.web> <trust level="Full" /> </system.web> </configuration>
게시 설정에서 "게시 중 사전 컴파일"을 실행하지만, 고급 사전 컴파일 설정(이 옵션 옆의 구성 링크)에서 "사전 컴파일된 사이트를 업데이트할 수 있도록 허용"을 실행 중지합니다.
저도 같은 오류가 있었는데 호스팅 디렉토리의 권한(읽기/쓰기/삭제)을 활성화하여 해결하였습니다.
SmartAsp가 필요한 경우.웹 사이트의 기능과 기능을 지원하기 위해 .exe 파일을 업로드할 수 있도록 허용하는 Net입니다.제어판으로 가서 "허용"을 켜시면 됩니다.Exe 파일" 아래 참조:
제 경우에는 ASP를 진행하고 싶어서 이렇게 해야 했습니다.NetCore 웹 사이트 및 .exe 파일이 반드시 필요합니다 :-)
tl;dr: csc.exe의 크기가 0바이트가 아닌지 확인합니다.
답변이 길어짐
또 다른 원인과 해결책을 추가하려면:제 경우에는 브라우저에 죽음의 노란 화면이 떴습니다.
'/' 응용 프로그램에서 서버 오류가 발생했습니다.
컴파일 오류
설명:이 요청을 처리하는 데 필요한 리소스를 컴파일하는 동안 오류가 발생했습니다.아래의 구체적인 오류 내용을 검토하여 소스 코드를 적절히 수정해 주시기 바랍니다.
컴파일러 오류 메시지:컴파일러가 오류 코드 255로 인해 실패했습니다.
c:\windows\system32\inetsrv>C:\inetpub\wwwroot\bin\roslyn\csc.exe /t:library /utf8 output /nostdlib+...
버전 정보:마이크로소프트.NET Framework 버전: 4.0.30319; ASPNET 버전: 4.7.2558.0
조사 결과 CMD 창 안에서 실행하여 csc.exe에 대한 호출을 분리했습니다.
c:\inetpub\wwwroot\bin\roslyn\csc.exe
메시지 상자를 받았습니다.
CMD 창에 다음 줄이 나타납니다.
액세스가 거부되었습니다.
윈도우 파일 탐색기에서 파일을 검사한 결과 csc.exe의 크기가 0바이트임을 알게 되었습니다.
배포 스크립트의 어느 단계에서 이런 일이 발생하는지 확실하지 않지만, 0바이트 크기의 csc.exe를 실제 작동하는 csc.exe로 교체한 후에는 모든 것이 올바르게 작동합니다.
로슬린은 요즘 선택사항이 아니기 때문에 위의 해결책들은 저에게 효과가 없었고 정확하지도 않습니다.
풀 계정이 웹 애플리케이션의 루트 폴더에 대한 읽기 및 실행 권한을 갖도록 하는 것이 효과적이었습니다.웹 앱에서 사용하는 풀 이름을 찾은 다음 응용 프로그램 풀 -> 풀 이름 -> 고급 설정 -> ID를 찾아 이 권한을 부여할 계정을 찾을 수 있습니다.
내 VPS 호스트는 다음과 같이 호스팅을 위해 비표준 디렉토리를 사용합니다.
c:\home\web.app.name\wwwroot
web.app.name 폴더에 사용 권한이 필요했습니다.
누젯 패키지 업데이트 중Microsoft.CodeDom.Providers.DotNetCompilerPlatform
최신 버전(당시)으로2.0.1
폴더에 대한 권한을 부여하거나 컴파일러를 제거하지 않고도 이 문제를 해결했습니다.
우리는 제3자의 신청으로 인해 이를 접하게 되었습니다.멀웨어 바이트 안티 랜섬웨어는 실제로 접근을 차단하는 주범이었습니다.이 문제 해결 방법:
- MalwareBytes Anti-Ransomware(공격 방지가 아님)에 대한 시스템 트레이 마우스 오른쪽 버튼 아이콘
- 보호 중지
언급URL : https://stackoverflow.com/questions/35184429/problems-publishing-a-website-on-smarterasp-net-with-csc-exe-file-included
'programing' 카테고리의 다른 글
C 및 C++ 개발을 위한 Eclipse의 대안? (0) | 2023.10.10 |
---|---|
docker. sock 권한이 거부되었습니다. (0) | 2023.10.10 |
MySQL 와일드카드 탈출 (0) | 2023.10.10 |
라라벨 웹사이트에서 테마 옵션을 구현하는 방법은? (0) | 2023.10.10 |
쿼리 마우스 입력() vs 마우스 오버() (0) | 2023.10.10 |