我得到了如下的webservice定义:
[OperationContract]
[FaultContract(typeof(Exception))]
[WebInvoke(ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Xml)]
SearchResponse SearchXML(SearchRequest req);和如下所示的服务配置:
<service name="SearchEngine.SearchService" behaviorConfiguration="HTTPGetBehavior">
<endpoint address="SearchEngine.SearchService" behaviorConfiguration="ajaxBehavior" binding="webHttpBinding" contract="SearchEngine.ISearchInterface" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8800/SearchService" />
</baseAddresses>
</host>
</service>我想要获取WSDL文件,这应该可以通过如下的HTTP-GET请求来实现:
http://localhost:8800/SearchService?wsdl但是所有iam得到的都是一个“wcf-service不允许的方法消息”
我做错了什么?我希望WSDL信息显示对外部客户端的请求和响应的结构(以便他可以准备函数调用)。
谢谢
发布于 2009-08-28 18:33:21
如果我没看错绑定,那么您使用的是"webHttpBinding“,这是一个REST接口。
REST没有,没有任何类似于WSDL文件的东西--这是SOAP的事情。
REST被认为更易于使用和理解-但它没有典型的SOAP web服务所具有的元数据量。
因此,基本上,如果您坚持使用REST (webHttpBinding),您就不能拥有WSDL -您必须找到另一种方式来传达您公开的服务方法以及它们所期望的可能参数。
似乎正在努力提出一种类似于用于REST的WSDL的称为Web Application Description Language (WADL)的东西,但我不知道这方面的努力已经取得了多大进展,据我所知,WCF REST初学者工具包目前还不支持任何这一点。
查看WADL的一些链接:
Marc
https://stackoverflow.com/questions/1346626
复制相似问题