2016-12-20 2 views
0

최근에 이상한 일이 발생했습니다. 나는 SPA 인 한 프로젝트를 가지고 있으며 게시 할 때 모든 wwwroot를 호스트에 복사합니다 (AspNet.dll이있는 bin 폴더와 함께).VS 2015 게시 웹 사이트에서 DLL을로드합니다.

enter image description here

그리고 내 정적 파일로 wwwroot 폴더 : 내 최신 프로젝트는 DLL이로드가 게시합니다. 이 문제는 사이트를 방문 할 때 정기적으로 멈추는 문제를 일으키는 것으로 보입니다. FTP에서 파일을 지운 다음 wwwroot의 내용을 복사하면 작동합니다.

왜 이런 일이 일어나고 어떻게 해결할 수 있는지 알고 있습니까?

+0

잘 작동 한 프로젝트가 있었다는 것을 의미합니까? 그리고이 새로운 프로젝트는 wwwroot 외부에서 많은 수의 dll을 게시하는 프로젝트입니까? – BigTallJosh

답변

1

이것은 asp.net 핵심 응용 프로그램입니다. Asp.net 코어는 전체 .net 프레임 워크와 같지 않습니다. 따라서 .dll 파일은 호스트 시스템에 있다고 가정 할 수 있으므로 대신 배치의 일부로 asp.net 코어를 구성하는 모든 파일을 복사해야합니다 (거기에 asp.net 코어의 "로컬"설치를 사용하는 방법이 있지만, 의도하지 않는 한 여기에는 아무런 관련이 없습니다. 이것이 바로 여기에있는 것입니다. DLL 파일은 응용 프로그램이 올바르게 실행되는 데 필요하고 필요합니다. 그들을 삭제하는 것은 나쁜 생각입니다.

실제로 사용하지 않는 DLL을 복사한다고 생각되면 참조를 확인하고 폴더에있는 참조를 참조하지 않아야합니다.

보안 위험을 초래할 수있는 wwwroot 폴더에 해당 DLL 파일이 필요하지 않습니다. 이것은 올바른 동작입니다. 현재 web.config 파일을 보면 ASP.net 핵심 응용 프로그램의 경우 IIS를 asp.net 프로젝트 (스크린 샷에 포함되지 않은)로 안내합니다. 그런 다음 프로젝트가 해당 DLL을로드하고 startup.cs 클래스에서 구성한 방법을 수행합니다.

이렇게하면 문제가 발생할 수 있습니다 (사이트를 방문 할 때 사이트가 정기적으로 정지하므로).

당신은 꽤 큰 가정을하고 있습니다. asp.net 핵심 프로젝트를 빌드하는 경우 해당 DLL 파일을 볼 수 있어야합니다. 정적 HTML/CSS/JS 파일을 제공하고 싶다면 asp.net 프로젝트가 필요하지 않습니다. 코어 또는 기타 - IIS 만 있으면됩니다.

사이트 기록이 있습니까? 얼어 붙는 이유에 대한 추가 정보가 있습니까? 트레이스를 스택합니까? 이벤트 로그?

+0

귀하의 가정은 정확합니다. 핵심 웹 사이트이기 때문에 핵심 웹 사이트 인 Startup.cs를 사용하여 리디렉션을 처리해야하지만 정적 HTML 웹 사이트 일뿐입니다. 이전에는 간단한 URL 재 작성으로 web.config를 사용했습니다. 또한, 내가 푸른에 게시한다는 것을 지적 할 가치가있다. – r3plica

+0

사실 asp.net 코어의 "결함"이 아니며, 실제로 설계 상 매우 많은 부분이다. asp.net 코어는 크로스 플랫폼이지만 IIS는 그렇지 않습니다. web.config 구성 파일은 IIS 구성이므로 다른 플랫폼에서 사용할 수 없습니다. 이것이 asp.net 코어에 자체 웹 서버 (Kestrel)가 내장 된 이유이며 IIS 자체가 아니라 파일을 제공하는 것입니다. 이것이 web.config가 IIS의 모든 작업을 응용 프로그램으로 전달하는 이유입니다. 따라서 web.config의 URL 다시 쓰기 모듈이 IIS 고유의 구성이므로 startup.cs에서 URL 재 작성과 같은 작업을해야합니다. – Kushan