使用?wsdl URI查询将LinqPad连接到WCF Web服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用?wsdl URI查询将LinqPad连接到WCF Web服务相关的知识,希望对你有一定的参考价值。
我想将LinqPad连接到WCF Web服务,该服务以http://server.example.com/Product/Service/Version/Soap11?wsdl
形式的URI公开其WSDL信息。我可以成功地将此URI添加为Visual Studio WCF Web服务引用,它也可以与WcfTestClient一起使用。
连接到调用方法时,服务的实际端点是http://server.example.com/Product/Service/Soap11
。
当我尝试将Web服务添加为LinqPad连接时,如果我指定包含?wsdl
查询的Web服务的URI,我会收到一条LinqPad错误消息“ArgumentException:期望一个绝对的,格式良好的http URL,没有查询或片段。 name:serviceRoot“。如果我省略了?wsdl
查询,我会得到一个400 Bad Request
响应。
(当我尝试创建Visual Studio Web服务引用时,我得到相同的400 Bad Request
响应,或者将服务添加到WcfTestClient,而不将?wsdl
附加到URI)。
我可以在客户端更改任何内容以使LinqPad成功连接到此Web服务吗?或者我是否需要在服务器端搞乱配置?我不控制我正在尝试连接的Web服务,但如果必须的话,我可以在服务器上调整一些配置文件。
请查看以下内容:
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中使用它们一样。
这实际上取决于你的优势所在。根据问题判断并不容易,因为它只描述了运行自动化工具的尝试。在SO的问题通常有一个“迄今为止我尝试了什么”的一部分。这不仅是为了鼓励发布之前的努力,也是为了看看可以提出哪些途径。
这里的一个重要问题是,如果您足够了解(或者愿意阅读)添加服务引用功能的工作方式,以便在代码中重现它。或者,如果您可以找到具有适当许可的开源项目来利用它。
我建议你看看writing LINQPad data extentions。
如果您的目标是使用身份验证的服务,我会提供一个替代答案。在我的情况下,该服务使用Windows Auth,linqpad soap driver尚不支持。您将使用serviceutil.exe
生成客户端代码,将其编译为程序集,然后创建Linqpad查询以使用它。
- 使用
serviceutil.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();
LinqPad可能会提示您添加对System.Web.Services
的引用。
以上是关于使用?wsdl URI查询将LinqPad连接到WCF Web服务的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用LINQPad连接到Oracle,提供“无法获取Oracle客户端信息”
Linqpad - Linq to Sql Ambiguous表和链接服务器名称
WSDL 的 SalesForce Web 服务 - 无效的登录 SOAP 错误
当 MLAB 仅提供字符串 URI 时,有人如何将他们的 MLAB mongodb 数据库连接到 robomongo [重复]