인증을 양식하는 가상 디렉토리에 WCF 서비스를 노출하려면 어떻게해야합니까?
-
19-09-2019 - |
문제
내 그룹은 내부 호스팅 ASP.NET MVC 웹 사이트를 형태로 인증 한 것으로 구축합니다.
ASP.NET MVC 웹 사이트와 동일한 가상 디렉토리에서 WCF 서비스를 호스팅하고 싶습니다.
내 질문:
WCF 서비스를 자유롭게 액세스 할 수 있도록하려면 어떻게해야합니까? 없이형태 증명.
내 현재의 곤경은 다음과 같습니다.
- .SVC에 액세스하고 웹 브라우저를 사용하여 Forms-Authentication을 처음 인증하면 WSDL 정보를 볼 수 있습니다.
- 그러나 wcftestclient.exe를 사용하여 WCF 서비스에 액세스하려고하면 다음과 같은 오류가 발생합니다.
오류 : 메타 데이터를 얻을 수 없습니다 http : //localhost/services/myservice.svc이것이 액세스 할 수있는 Windows (R) Communication Foundation Service 인 경우 지정된 주소에서 메타 데이터 게시를 활성화했는지 확인하십시오. 메타 데이터 게시를 활성화하려면 MSDN 문서를 참조하십시오. http://go.microsoft.com/fwlink/?linkid=65455.ws-metadata교환 오류
해결책 3
이 질문에 답하려고했던 모든 분들께 감사드립니다.
후에 시간 이 문제를 해결하기 위해 사용자 정의 인증 모듈이 내 클라이언트 시도가 메타 데이터를 얻으려는 시도를 거부하고 있음을 발견했습니다. 말하자면, 나는이 논리를 중심으로 길을 가야했다.
오 - 코드를 밟는 것은 매우입니다 과소 평가. ;)
다른 팁
당신은 있습니다 mex endpoint
서비스를 위해 web.config에 정의 되었습니까? 시험 클리어가 이것을 찾고있을 것입니다.
그렇다면 다른 가능성은 서비스 폴더에서 승인을 비활성화하는 것입니다. 나는 이것을 테스트 한 적이 없지만 이론적으로는 효과가있을 수 있습니다 ...
웹 사이트라면 localhost
, WCF 서비스를 넣으십시오 localhost/services/myservice.svc
또는 같은. 그런 다음 web.config를 추가하십시오 /services
승인을 무시하고 모든 것을 허용하는 폴더.
<configuration>
<authorization>
<allow users="*" />
</authorization>
</configuration>
.SVC 파일을 가상 디렉토리의 하위 폴더에 넣을 수 있다면 길 다른 수준의 승인으로 액세스 할 수 있도록 양식 인증의 속성. 다음은 튜토리얼입니다.
가상 디렉토리가 IIS에서 익명 액세스를 위해 구성되어 있음을 양식 인증을 사용하고 있기 때문에 가정합니다. 이 말을 통해 WCF 서비스 예를 들어, *.SVC 파일을 자체 디렉토리에 배치하면 기본 Web.Config 파일을 업데이트하고 위치 태그를 추가하여 서비스가 포함 된 디렉토리의 양식 인증을 비활성화 할 수 있습니다. 또한 web.config 's의 WCF 구성 바인딩 설정을 통해 보안을 해소하십시오. <system.servicemodel>
아직없는 경우 추가 해야하는 섹션 :
<bindings>
<wsHttpBinding> <!-- one of many possible bindings -->
<binding name="...">
<security mode="None"> <-- allows anonymous access -->
<message clientCredentialType="None"/> <-- allows anonymous access -->
</security>
</binding>
</wsHttpBinding>
</bindings>