2010-02-09 7 views
3

Windows 7 X64에서 실행되는 Visual Studio 2010을 사용 중입니다. 양방향 통신의 간단한 WCF 구현을 만들려고했습니다. 슬프게도 충분히 빨리 붙어 있습니다. 간단한 서비스 계약 서비스 라이브러리와 구현 - - ServiceHost를 :System.BadImageFormatException - 해결할 수 없음

나는 3 개 프로젝트가 SelfHosting 를 통해 서비스 라이브러리를 호스팅 - 클라이언트 : WCF 서비스에서 방법을 소비

뭔가 내가 바로 나타났습니다 Service 라이브러리에는 플랫폼으로 모든 CPU가 있습니다. 다른 두 사람은 플랫폼으로서 x86을 사용했습니다. 이 시점에서 나는이 오류를 얻을 수 있을지 전혀 몰랐다. 그래서 이것은 정말로 나를 괴롭히지 않았다.

그런 다음 wcfsvchost.exe가 내장 된 서비스 라이브러리를 시작했습니다. 서비스는 문제없이 호스팅되었습니다. 그럼 내 호스트를 통해 내 서비스를 호스팅하고 싶었습니다. 여기에 System.BadImageFormatException에 대한 첫 경험이 있습니다. 나는 그것이 그 시점에 무엇인지 전혀 몰랐다. 그래서 나는 붙어서 인터넷 검색을했다. 내가 올바르게 이해한다면 모든 dll 등의 플랫폼이 동일 할 필요가있다. 누군가 나를 좀 더 잘 설명 할 수 있다면. 제발.

이 서비스 라이브러리의 플랫폼은 x86 대신 모든 CPU를 가지고 있기 때문에 어쨌든 변경할 수 있습니다. 그래서 나는 프로젝트 설정과 설정 관리자를 통해 그것을 시도했다. 그러나 문제는 그것을 바꿀 수있는 선택권이 없다는 것입니다. 그런 다음 프로젝트를 내리고 다른 .csproj가 어떻게 보이는지 살펴보고 값을 변경했습니다. 그것을 다시로드하고 모든 것이 좋았다. 이제 올바른 플랫폼 x86을 갖게되었습니다. 자, 그럼 서비스 라이브러리를 실행 해 봅시다 .BOOM System.BadImageFormatException

System.BadImageFormatException : 파일 또는 어셈블리 'file : /// C : \ Users \ Sven \ documents \ visual 스튜디오 2010 \ Projects \ DuplexDemo를로드 할 수 없습니다. \ CustomerService2 \ bin \ Debug \ CustomerService2.dll '또는 종속성 중 하나를 선택하십시오. 잘못된 형식의 프로그램을로드하려고했습니다. System.Reflection.RuntimeAssembly._nLoad (AssemblyName 파일 이름 : '파일 : /// C : \ Users \ Sven \ documents \ visual 스튜디오 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll' 파일 이름 : 문자열 코드베이스, 증거 assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, 부울 throwOnFileNotFound, 부울 forIntrospection, 부울 suppressSecurityChecks) 에서 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName (의 AssemblyName assemblyRef, 증거 assemblySecurity, StackCrawlMark & stackMark, 부울 forIntrospection, 부울 suppressSecurityChecks) 에서 System.Reflection.Assembly.Load (AssemblyName assemblyRef)at Microsoft.Tools.SvcHost.ServiceHostHelper.LoadServiceAssembly (String svcAssemblyPath)

=== 바인드 상태 정보 === LOG : 사용자 = Sven-PC \ Sven LOG : Where-ref 바인드. 위치 : C : \ Users \ Sven \ documents \ visual 스튜디오 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll 로그 : Appbase = file : /// C :/Users/Sven/documents/visual studio 2010/Projects/DuplexDemo/CustomerService2/bin/Debug LOG : 초기 PrivatePath = NULL

호출 어셈블리 : (알 수 없음).

LOG :이 바인딩은 LoadFrom로드 컨텍스트에서 시작됩니다. WRN : LoadFrom 컨텍스트에서 네이티브 이미지가 검색되지 않습니다. 네이티브 이미지는 Assembly.Load()와 같이 기본로드 컨텍스트에서만 탐색됩니다. LOG : 응용 프로그램 구성 파일 사용 : C : \ Users \ Sven \ documents \ visual 스튜디오 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll.config LOG : 호스트 구성 파일 사용 : LOG : 컴퓨터 구성 사용 파일은 C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.21006 \ config \ machine.config에 있습니다. LOG : 새 URL 파일 다운로드 시도 : /// C :/Users/Sven/documents/visual studio 2010/Projects/DuplexDemo/CustomerService2/bin/Debug/CustomerService2.dll. ERR : 어셈블리 설치를 완료하지 못했습니다 (hr = 0x8007000b). 조사가 종료되었습니다.

이제 플랫폼을 변경 했으므로 서비스 라이브러리가 더 이상 실행되지 않습니다. 그래서 지금은 붙어있어 몇 가지 해결책을 모색하고 있습니다.

아무도 나에게 무슨 일이 일어 났는지 말해 줄 수 있습니까? 일반 바닐라 WCF이고 작동하기 전에 코드에 오류가 있다고 생각하지 마십시오. X32 설정에서 만든

이것은 아마도 어둠 속에서 매우 긴 샷

+0

당신이이 문제에 대한 해결책을 찾았나요? – newman

답변

3

저를 도와주세요하면 코드는 작동되지만 32 비트 모드에서 응용 프로그램 풀을 실행할 수 있을까?

나는 당신이이 문제를 얼마 동안보고 있었기 때문에 이것을 원하지 않는다고 추측하고 있습니까?

비슷한 문제를 해결 한 방법은 64 비트 호환이 아닌 불쾌한 3 자 라이브러리가 발견 될 때까지 내가 사용한 라이브러리를 하나씩 살펴 보았습니다.

안부 Rihan

관련 문제