我正在使用WCF(VS2005,.Net 3.0),并希望通过Web浏览器而不是代码直接调用服务来测试服务。
我有一个用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服务,当我通过浏览器访问方法时,我得到了响应;但是,当我访问该服务时,我只能获得“你创建了一个服务”页面,但这些方法都没有。
答案 0 :(得分:4)
考虑使用Wcf Service Test Tool进行服务的初始测试(但是真正的单元测试是你的朋友:-))(是的 - 你需要一个mex端点,至少最初是这样)
至于调试 - 您是否附加到托管服务的正确进程?你用调试符号编译?如果服务发布到IIS - 发布的代码是否与visual studio中的代码相同?
答案 1 :(得分:0)
您是否尝试过使用SoapUI?它们提供了一个非常棒的Web服务测试工具。他们甚至有一个免费版本,将作为webStart运行!
另外,尝试安装mex端点,c.f。 msdn link.
答案 2 :(得分:0)
WCF不提供ASMX服务过去所做的“从网上调用”选项。为什么?这是一个巨大的安全漏洞,而不是测试Web服务的最佳方式。
一个选项是@Yossi建议,并使用Wcf服务测试工具。
或者更好的是,编写自己的客户端来使用您的Web服务。这将帮助您处理将使用您的服务的人所处理的相同问题,并且相信我,WCF可以拥有相当多的挂断。
别误会我的意思,WCF真棒!但是有很多东西需要兼顾,如果你有新的可能性,你就会犯错。即便是早期采用者仍然不知道WCF的所有细节。
答案 3 :(得分:0)
看看WebGetAttribute - 它需要.NET 3.5。
这允许您从WCF Web服务获取REST数据。