WebDev 활용 방법x64에서 WebServer.exe(VS 웹 서버)?
Visual Studio는 최소한 2010년 버전이 업데이트될 때까지 x86입니다. VS2010에서는 여전히 문제가 되고 있지만 기본 64비트 Cassini를 지원하지 않습니다.제 질문은 독립적인 ASP에 대한 방법을 생각하거나 아는 사람이 있을까 하는 것입니다.2008년 또는 2010년용 x64인 NET 디버그 서버?
배경:저희 ASP.NET 응용프로그램은 Oracle을 DB로 사용하여 실행됩니다.나중에 메모리 문제로 64비트 서버에 있으므로 Oracle의 64비트 드라이버(Instant Client)를 사용해야 합니다.
설정:
- x64 OS(XP 또는 Windows 7)
- IIS(6 또는 7, 둘 다 x64 앱 풀)
- Oracle 64비트 Instant Client(PATH의 별도 디렉터리)
비주얼 스튜디오 2008SP1 비주얼 스튜디오 2010
IIS에서 응용 프로그램 풀은 64비트로 실행되며, WebDev 이후에는 의도한 대로 오라클 드라이버를 사용합니다.WebServer.exe는 32비트 환경에서 64비트 드라이버 DLL을 로드하려고 하므로 BadImageFormatException이 표시됩니다.모든 개발자는 Visual Studio 2008을 통해 빠른 디버그 서버를 사용할 수 있기를 원하지만 32비트로 실행되기 때문에 사용할 수 없습니다.응용 프로그램을 시작하는 동안 발생하는 문제가 있으므로 IIS 프로세스에 연결하더라도 문제를 추적하기에는 충분하지 않은 경우가 있습니다.
대안이나 해결책이 있습니까?가능한 한 개발/Val/Prod 계층과 일치하기를 원하므로 x64에서 실행되는 모든 것이 이상적입니다.
VS 2010에 대한 업데이트
처음 게시된 이후로 이 질문에 대한 많은 변경 사항이 있습니다. 첫 번째 VS2010은 지금 출시되었지만, 여기서는 여전히 동일한 문제가 있지만 제가 진행 중인 프로젝트는 그렇지 않습니다.우리는 이 문제를 해결하기 위해 두 번의 변경을 거쳤기 때문에 다른 사람의 슬픔을 덜어주기를 바라며 다음과 같이 게시하겠습니다.
첫 번째 솔루션은 Oracle x86을 32비트 이상, x64를 64비트 모드로 로드하는 것이었습니다. 우리는 web.config를 통해 64비트로 실행할 때 어셈블리 참조를 교체하여 이 작업을 수행했습니다.
<configuration>
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" processorArchitecture="amd64" />
<bindingRedirect oldVersion="2.0.0.0-10.9.9.9" newVersion="2.102.3.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
은 여서핵심입니다.processorArchitecture="amd64"
, .vmdk, 64비트로 가 발생합니다.
이러한 버전은 이제 구식일 수 있습니다(특히 Oracle에 대한 관심을 읽고 있다면). 오래 전의 일입니다. 및 의 32비트 및 64비트 버전을 했습니다.Oracle.DataAccess
GAC에 들어가요.32비트 버전은10.xxx
Oracle 10g의 경우 64비트 버전은2.1xxx
그래서 단지 바인딩을 사용하여 교환하는 것이 효과가 있습니다.
두 번째 장기적인 솔루션은 Oracle 클라이언트에서 완전히 벗어나는 것이었습니다. 이제는 Link-to-SQL 공급자를 위해 dotConnect for Oracle을 사용하고 있으며, 직접 TCP 연결을 사용하여 완전히 관리되는 코드이기 때문에 애플리케이션에 더 이상 32/64비트 특정 코드가 없으므로 유지 관리가 훨씬 더 쉽습니다.
이것을 발견한 사람이 후속 조치도 유용하게 사용할 수 있기를 바랍니다.제가 사용하게 된 솔루션 중 하나에 대해 질문이 있으시면 댓글을 달아주시면 더 자세히 설명해 드리겠습니다.
두 가지 아이디어:
- 모노 프로젝트의 XSP와 함께 무언가를 코블합니다.
- 전체 32비트 환경에서 테스트하고 64비트 환경에 배포합니다.
소스에서 64비트 카시니를 컴파일할 수 있습니다.
로컬 컴퓨터에서 IIS를 사용합니다.
64비트 환경을 사용하는 경우에도 Visual Studio에서 32비트 dll을 임시로 참조하거나 BIN 폴더에서 수동으로 복사하여 디버그할 수 있습니다.코드를 컴파일할 때마다 64비트 어셈블리를 BIN 폴더에 다시 복사합니다.
언급URL : https://stackoverflow.com/questions/837285/how-to-utilize-webdev-webserver-exe-vs-web-server-in-x64
'programing' 카테고리의 다른 글
응용 프로그램의 클래스 경로를 수정하여 org.axonframework.eventsourcing.eventstore.jpa의 호환되는 단일 버전이 포함되도록 합니다. (0) | 2023.07.20 |
---|---|
redis-py : StrictRedis()와 Redis()의 차이점은 무엇입니까? (0) | 2023.07.20 |
SYS_GUID()를 어떻게 varchar로 변환합니까? (0) | 2023.07.20 |
Python 로그 형식 문자열에 사용자 지정 필드를 추가하려면 어떻게 해야 합니까? (0) | 2023.07.20 |
SQL에서 NULL이 NULL과 일치하지 않는 이유는 무엇입니까? (0) | 2023.07.20 |