使用?wsdl URI查询将LinqPad连接到WCF Web服务

Hyd*_*rum 15 wcf wsdl web-services linqpad

我想将LinqPad连接到WCF Web服务,该服务在表单的URI中公开其WSDL信息http://server.example.com/Product/Service/Version/Soap11?wsdl.我可以成功地将此URI添加为Visual Studio WCF Web服务引用,它也可以与WcfTestClient一起使用.

连接到调用方法时,服务的实际端点是http://server.example.com/Product/Service/Soap11.

当我尝试将Web服务添加为LinqPad连接时,如果我指定Web服务的URI(包括?wsdl查询),我会收到一条LinqPad错误消息"ArgumentException:期望一个绝对的,格式良好的http URL,没有查询或片段.参数名称:serviceRoot".如果我省略?wsdl查询,我会收到400 Bad Request回复.

(400 Bad Request当我尝试创建Visual Studio Web服务引用时,我得到相同的响应,或者将服务添加到WcfTestClient,而不附加?wsdl到URI).

我可以在客户端更改任何内容以使LinqPad成功连接到此Web服务吗?或者我是否需要在服务器端搞乱配置?我不控制我正在尝试连接的Web服务,但如果必须的话,我可以在服务器上调整一些配置文件.

Joe*_*ari 24

请查看以下内容:

https://github.com/dylanmei/linqpad-soap-driver

它是基于SOAP的Web服务的第三方LINQPad驱动程序.

  • 我针对WCF服务尝试了这个,它没有生成任何东西.我收到了以下错误:警告>此Web引用不符合WS-I Basic Profile v1.1.警告>未找到SOAP 1.1绑定:WS-I的Basic Profile 1.1包含实施指南,建议如何一起使用一组核心Web服务规范来开发可互操作的Web服务.对于1.1 Profile,这些规范是SOAP 1.1,WSDL 1.1,UDDI 2.0,XML 1.0和XML Schema.错误>未生成任何类.>无法创建连接. (6认同)

Hyd*_*rum 7

看起来我误解了LINQPad的"添加连接"功能的范围.它仅适用于WCF 数据服务(实现OData规范),而不适用于WCF Web服务.(一般来说,WCF服务和WCF数据服务之间的差异在我之前并不清楚).

我正在尝试连接的服务是WCF Web服务,但不是 WCF数据服务Web服务.事实证明,从LINQPad使用这些Web服务的正确方法是使用svcutil.exe生成代理类代码和配置文件,然后可以通过VS或csc.exe进行编译,然后添加生成的程序集作为LINQPad中的标准汇编参考.然后可以在LINQPad中使用代理类,就像在Visual Studio中使用它们一样.


Dav*_*ers 5

如果您的目标是使用身份验证的服务,我将提供一个替代答案,这将有所帮助。在我的例子中,该服务使用linqpad SOA 驱动程序尚不支持的 Windows Auth。您将使用 生成客户端代码svcutil.exe,将其编译为程序集,然后创建 Linqpad 查询来使用它。

  1. 生成您的服务客户端和配置文件svcutil.exe http://mylocalsite/myservice.svc- 它应该生成一个myservice.cs文件和output.config.

  2. 将客户端代码编译成程序集:csc myservice.cs /target:library. 你现在应该有myservice.dll.

  3. 创建 linqpad 查询并进入其属性 (F4)。在 App.config 选项卡中将自定义路径设置为您的output.config文件。在“其他引用”下,添加对 的引用myservice.dll

您的查询将非常简单,例如:

var client = new MyServiceClient("BasicHttpBinding_IMyService");

var result = client.DoTheThing();

result.Dump();

client.Close();
Run Code Online (Sandbox Code Playgroud)

LinqPad 可能会提示您添加对System.Web.Services.