문제

C# ASP.NET 웹 서비스에서 기본 DLL(FastImage.dll)을 사용하고 있는데 가끔 잠깁니다(삭제할 수 없습니다. 액세스가 거부되었다고 표시됨).DLL을 삭제하려면 IIS를 중지해야 합니다.게시된 웹 서비스의 bin 폴더에서 이 DLL을 삭제할 수 없기 때문에 성공적으로 게시할 수 없습니다(성공적으로 게시되었다고 생각하더라도!). 이는 개발 및 버그 수정을 어렵게 만듭니다(특히 이전 코드를 행복하게 실행하는 경우). 변경사항이 서버에 반영되지 않을 수 있습니다!)웹 서비스가 DLL을 폭파하고 잠그게 만드는 버그는 해당 DLL 외부에 있는 내 코드에 있으므로 이것이 FreeImage 라이브러리보다 더 일반적인 문제라고 생각합니다(열을 발생시키지 않음).

  1. 누구든지 이것을 경험 했습니까?
  2. VS IDE에서 "게시 성공"이라는 메시지가 실제로 의미하는지 확인하거나 일종의 스크립트를 실행하여 게시를 시도하기 전에 파일이 실제로 삭제되었는지 확인하는 방법이 있습니까(예: 사전 빌드) VC++의 단계).(지금은 이전 DLL을 실행하는 대신 DLL이 교체되었는지 확인하기 위해 게시하기 전에 파일을 수동으로 삭제합니다.DLL을 삭제할 수 없다면 여전히 문제가 됩니다.)
  3. 배치 파일에서 파일이 성공적으로 삭제되었는지 어떻게 알 수 있나요?(실패하면 IIS를 중지했다가 시작할 수 있습니다)
  4. 스크립트(가급적이면 게시...)에서 IIS를 중지하고 시작할 수 있습니까?VS IDE에서의 작업) 그렇다면 어떻게 해야 합니까?
도움이 되었습니까?

해결책

IISReset 명령줄 도구를 사용하면 게시하려는 원격 서버가 아닌 로컬 컴퓨터에서만 IIS가 다시 시작됩니다.

Windows 2003 서버에 게시한다고 가정하면 웹 서비스가 실행되는 웹 사이트나 가상 폴더에서 IIS AppPool을 중지했다가 다시 시작하는 약간 덜 과감한 단계를 시도하는 것이 좋습니다.(그러면 대상 서버에서 실행되는 모든 사이트를 오프라인으로 전환하지 않습니다.) 이 역시 웹 서비스가 자체 앱 풀에서 실행된다고 가정합니다.이상적으로는 그래야 하므로 격리된 상태로 유지해야 합니다.

게시 프로세스를 사용하는 것에서 벗어나 웹 배포 프로젝트를 사용해 보는 것이 좋습니다.다음은 ScottGu의 블로그에 대한 자세한 내용입니다. VS 2005 웹 배포 프로젝트.

웹 배포 프로젝트 접근 방식의 장점은 MSBuild가 실제로 MSBuild를 둘러싼 편리한 래퍼이므로 MSbuild의 모든 성능과 기능을 제공한다는 것입니다.다음은 MSBuild 팀의 게시물입니다. 사전 빌드 및 사후 빌드 기능

도움이 되었기를 바랍니다.

다른 팁

IISReset 명령줄 도구를 사용하여 iis를 중지/다시 시작할 수 있습니다.따라서 iis를 중지하고 파일을 복사한 다음 iis를 다시 시작하는 간단한 배치 파일을 작성할 수 있습니다.그러나 이것을 VS 게시 기능과 통합하는 방법을 잘 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top