문제

3 : 업데이트 3.
Visual Studio 2008 테스트 프로젝트를 만들고 공유 사이트 WCF 서비스 참조에 대한 서비스 참조를 만들려고했으며 다음 오류를 받았습니다.

오류 다운로드가 있었다 'http : //apps.mydomain/myservice.svc'. HTTP 상태 400 : 잘못된 요청으로 요청이 실패했습니다. 메타 데이터는 해결할 수없는 참조가 포함되어 있습니다. 'http : //apps.mydomain/myservice.svc'. 콘텐츠 유형 응용 프로그램/SOAP+XML; charset = utf-8은 서비스에 의해 지원되지 않았습니다 http : //apps.mydomain/myservice.svc'. 클라이언트 및 서비스 바인딩은 불일치 할 수 있습니다. 원격 서버는 오류를 반환했습니다. (415) 콘텐츠 유형 '응용 프로그램/soap+xml; charset = utf-8 '은 예상 유형'텍스트/xml이 아닙니다. charset = utf-8 '.. 서비스가 현재 솔루션에 정의되어 있으면 솔루션을 구축하고 서비스 참조를 다시 추가하십시오.

UPDATE 2:
@Nick- 각 엔드 포인트의 주소를 각 서버의 완전히 자격을 갖춘 경로로 명시 적으로 설정하라는 제안을 시도했지만 여전히 동일한 결과를 얻습니다.

또한 공유 사이트 URL로 ListenUri 속성을 설정하려고하면 404 오류 대신 400 불량 요청 오류가 발생합니다.

업데이트
일부 추가 연구 후에는 IIS 구성 설정 충돌이있었습니다. http : //apps1.mydomain 그리고 http : //apps2.mydomain "서버 응용 프로그램을 사용할 수 없음"오류를 지나갈 수있었습니다.

이제 공유 사이트로 탐색하려고 할 때 404 오류가 발생합니다 (http : //apps.mydomain),하지만 나는 http : //apps1.mydomain 그리고 http : //apps2.mydomain 서비스 참조.

원래 문제

내 Companys가 사용합니다 Microsoft NLB IIS 서버 간의 균형 트래픽을로드합니다. 최근에 각 IIS 6 Windows Server 2003 Standard Edition SP1 서버에 WCF 서비스를 배포했습니다. IE 7을 사용하여 공유 도메인 이름을 찾아 보려고했을 때 다음과 같은 오류를 받았습니다.

서버 애플리케이션을 사용할 수없는 웹 응용 프로그램은이 웹 서버에서 액세스하려고 시도하는 것이 현재 사용할 수 없습니다. 웹 브라우저에서 "새로 고침"버튼을 누르면 요청을 다시 시도하십시오.

관리자 참고 :이 특정 요청 실패의 원인을 자세히 설명하는 오류 메시지는 웹 서버의 응용 프로그램 이벤트 로그에서 찾을 수 있습니다. 이 로그 항목을 검토 하여이 오류가 발생한 원인을 발견하십시오.

소비자는 http : //apps.mydomain 서비스를 사용하려면 가상 도메인이 매핑됩니다. http : //apps1.mydomain 또는 http : //apps2.mydomain. 각 서버의 서비스를 탐색하면 해당 오류가 수신되지 않습니다.

이 서비스는 현재 익명의 Basichttpbinding을 사용하고 있습니다.

다른 사람 이이 문제를 경험 했습니까?

역사

이 오류가 발생하기 전에 세 개의 도메인 이름을 모두 broswed 때 다음 오류를 받았습니다 (http : //apps.mydomain, http : //apps1.mydomain, http : //apps2.mydomain):

이 컬렉션에는 이미 Scheme HTTP가있는 주소가 포함되어 있습니다. 이 컬렉션에는 체계 당 최대 하나의 주소가있을 수 있습니다.

나는 그것을 사용했다 ServiceHostFactory 클래스 내 .SVC 파일을 사용자 정의하여 사용자 정의 서비스 공장을 지정합니다. 그런 다음 ServiceHostFactory에서 상속하고 필요에 따라 재정의하여 사용자 정의 공장을 만듭니다.

public class MyFactory : ServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        return new ServiceHost(serviceType, baseAddresses[0]);
    }
}

<%@ ServiceHost Language="C#" Factory="MyFactory" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>
도움이 되었습니까?

해결책

WCF 서비스 및 소비 애플리케이션에 대한 다른 구성을 실험 한 후. 작업 서비스 참조 중 하나에 대한 서비스 참조를 만들었습니다.http : //apps1.mydomain 또는 http : //apps2.mydomain) 소비 애플리케이션에서. 그런 다음 클라이언트 구성에서 엔드 포인트 참조를 변경하여 공유 사이트 WCF 주소를 가리 킵니다.http : //apps.mydomain) 그리고 나는 서비스를 소비하고 사용할 수있었습니다.

다른 팁

WCF에 문제가 있었고 서버에 IP 주소가 다른 여러 네트워크 카드가있는 곳에서 LOAD BALANCING과 WCF는 처음 발견 한 IP 주소를 그림으로 표시합니다. WCF가 오른쪽에 바인딩되도록 각 서버의 서비스 정의에서 IP 주소를 명시 적으로 설정해야했습니다.

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