gpt4 book ai didi

WCF WebInvoke 获取 WSDL 的问题

转载 作者:行者123 更新时间:2023-12-04 07:04:24 24 4
gpt4 key购买 nike

我有一个这样的webservicedefinition:

    [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

但我得到的只是“wcf 服务不允许的方法消息”

我究竟做错了什么?我希望 WSDL 信息向外部客户端显示请求和响应的结构(以便他可以准备函数调用)

谢谢

最佳答案

好吧,如果我正确阅读了绑定(bind),那么您使用的是“webHttpBinding”,它是一个 REST 接口(interface)。

REST 确实 不是 有任何类似 WSDL 文件的东西 - 那是 SOAP 的东西。

REST 被认为更易于使用且更易于理解 - 但它没有典型 SOAP Web 服务所具有的元数据量。

所以基本上,如果你坚持使用 REST (webHttpBinding),你就不能拥有 WSDL - 你必须找到另一种方式来传达你的服务方法和他们期望的可能参数。

似乎正在努力提出类似于用于 REST 的 WSDL 的东西,称为 Web Application Description Language (WADL)。但我不知道这种努力已经取得了多大的进展,据我所知,WCF REST 入门工具包还不支持任何这些。

查看 WADL 的一些链接:

  • Sun Web Application Description Language Spec
  • WADL REST API description language getting some attention
  • Do we need WADL?
  • Does REST need a WSDL?

  • 马克

    关于WCF WebInvoke 获取 WSDL 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346626/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com