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驱动程序.
看起来我误解了LINQPad的"添加连接"功能的范围.它仅适用于WCF 数据服务(实现OData规范),而不适用于WCF Web服务.(一般来说,WCF服务和WCF数据服务之间的差异在我之前并不清楚).
我正在尝试连接的服务是WCF Web服务,但不是 WCF数据服务Web服务.事实证明,从LINQPad使用这些Web服务的正确方法是使用svcutil.exe生成代理类代码和配置文件,然后可以通过VS或csc.exe进行编译,然后添加生成的程序集作为LINQPad中的标准汇编参考.然后可以在LINQPad中使用代理类,就像在Visual Studio中使用它们一样.
如果您的目标是使用身份验证的服务,我将提供一个替代答案,这将有所帮助。在我的例子中,该服务使用linqpad SOA 驱动程序尚不支持的 Windows Auth。您将使用 生成客户端代码svcutil.exe
,将其编译为程序集,然后创建 Linqpad 查询来使用它。
生成您的服务客户端和配置文件svcutil.exe http://mylocalsite/myservice.svc
- 它应该生成一个myservice.cs
文件和output.config
.
将客户端代码编译成程序集:csc myservice.cs /target:library
. 你现在应该有myservice.dll
.
创建 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
.
归档时间: |
|
查看次数: |
7973 次 |
最近记录: |