WCF 서비스를 직접 호출 할 수 없습니다 (.NET 3.0)
문제
WCF (VS2005, .NET 3.0)와 함께 작업하고 있으며 코드 대신 웹 브라우저를 통해 직접 호출하여 서비스를 테스트하려고합니다.
OperationContract 속성 호출 getTest ()로 장식 된 하나의 메소드가 있습니다. 액세스 할 수있는 .SVC 파일 뒤에 서비스가 있습니다. 그러나 내가 가면 .../test.svc/gettest가있는 경우 빈 화면 만 나타납니다.
다음은 web.config입니다.
<system.serviceModel>
<services>
<service name="TestService" behaviorConfiguration="TestBehavior">
<endpoint
address=""
binding="basicHttpBinding"
contract="TestService.ITestService"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TestBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
서비스에서 중단 점을 설정하려고 할 때 마다도 맞지 않습니다. 내가 어디에서 잘못 될지에 대한 아이디어가 있습니까? 브라우저를 통해 메소드에 액세스 할 때 응답을받는 ASMX 서비스에 익숙합니다. 그러나 서비스에 액세스 할 때만 "서비스를 만들었습니다"페이지 만 얻을 수 있지만 방법은 없습니다.
해결책
WCF는 ASMX 서비스가 사용했던 "웹에서 호출"옵션을 제공하지 않습니다. 왜요? 그것은 거대한 보안 구멍이며 웹 서비스를 테스트하는 가장 좋은 방법은 아닙니다.
한 가지 옵션은 @yossi가 제안한대로 수행하고 WCF 서비스 테스트 도구를 사용하는 것입니다.
또는 더 나은 아직, 웹 서비스를 소비하려면 자신의 클라이언트를 작성하십시오. 이를 통해 서비스를 소비 할 사람들과 동일한 문제를 처리하는 데 도움이 될 것입니다.
나를 잘못 이해 하지마, WCF는 Frikkin 굉장합니다! 그러나 저글링에는 많은 것이 있으며, 새로운 가능성이 있다면 잘못 될 것입니다. 얼리 어답터조차도 여전히 WCF의 모든 내용을 알지 못합니다.
다른 팁
사용 고려하십시오 WCF 서비스 테스트 도구 서비스의 초기 테스트를 위해 (그러나 실제로 단위 테스트는 친구입니다 :-)) (예- 최소한 처음에는 MEX 엔드 포인트가 필요합니다).
디버깅에 관해서 - 서비스를 호스팅하는 올바른 프로세스에 첨부되어 있습니까? 디버그 기호로 컴파일되어 있습니까? 서비스가 IIS에 게시 된 경우 게시 된 코드는 Visual Studio의 코드와 동일합니까?
.NET 3.5가 필요한 webgetAttribute를 살펴보십시오.
이를 통해 WCF 웹 서비스에서 REST 데이터를 얻을 수 있습니다.