2

给定以下 url 网络服务:

http://geoss.compusult.net/wes/serviceManagerCSW/csw?request=GetCapabilities&service=CSW

我将如何为服务创建代理类?

更多信息在这里

编辑#1:

上面的托管服务正在实施 OGC 标准 (CSW)。该标准的模式托管在这里。他们在这里有一些 WSDL 。如果我要将其中一个 WSDL 的URL放入 Visual Studio 的“添加引用/服务”中,我会得到一个 Web 操作列表并将生成一个引用。但是,这行不通,因为它不知道真正的托管服务提供商。所以我不太确定该怎么做。

编辑#2:

这是它产生的: 在此处输入图像描述

编辑#3:

按照约翰桑德斯的评论检查错误,我得到以下信息:

自定义工具错误:无法为服务引用“ServiceReference1”生成代码。有关详细信息,请查看其他错误和警告消息。D:\temp\WebApplication2\WebApplication2\Service References\ServiceReference1\Reference.svcmap 1 1 WebApplication2

所以我检查了警告,我看到了一些类似的警告:

警告 1 自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter 错误:带有目标命名空间的架构' http://www.opengis.net/cat/ csw/2.0.2 ' 找不到。XPath 到错误源: //wsdl:definitions[@targetNamespace=' http://www.opengis.net/cat/csw/2.0.2/requests ']/wsdl:portType[@name='csw'] D: \temp\WebApplication2\WebApplication2\Service References\ServiceReference1\Reference.svcmap 1 1 WebApplication2

这些是我在 .NET 中使用这些模式做任何事情时得到的相同类型的警告。模式不应该与任何语言一起使用吗?以下是一些我对 .NET 和这些架构感到心痛的例子: HERE HERE HERE

所以我不确定是责怪模式还是 .NET 无法处理如此大的模式。

事件尽管 Marc 和 Basiclife 都提供了通常适用于“正常”模式的答案,但 John 得到了答案,因为当我认为这不是故障排除问题,而是我缺少的东西时,他帮助我解决了问题。我应该知道这些模式,尽管我认为创建客户端不会有什么大不了的。

4

3 回答 3

2

右键单击您的项目,然后转到Add Service Reference. 单击Advanced左下角,然后Add Web Reference再次单击左下角。

当您输入 URL 时,它会查找可用的服务,您可以在项目中选择并为其命名。

编辑:

导入 wsdl 后,您可以通过应用配置更改其基地址。

编辑2:

我也习惯了 WCF 服务 :-) 要更改 URL,请右键单击您的参考,转到属性,然后将其更改Web Reference URL为您需要的任何内容。

编辑3:

添加引用时,错误列表中会出现以下警告消息:

Warning 1 Custom tool warning: DiscoCodeGenerator unable to initialize code generator. No code generated. s:\dev\Sandbox\Sandbox\Web References\net.opengis.schemas\Reference.map

这就是为什么Reference.cs是空的。

于 2011-02-10T19:21:46.680 回答
2

右键单击项目,选择Add Service Reference. 输入提供的网址...

编辑: 添加对 WSDL 的引用。这就是 VS 创建代理所需要的。

创建代理后,您可以在应用程序的web.config/文件中编辑它实际用于访问服务的 URLapp.config

于 2011-02-10T19:22:04.650 回答
1

使用实际的 WSDL 来生成服务引用。然后,当您打开代理类时,使用包含EndpointAddress. 这将包括实际服务的 URL。

WSDL 中的 URL 只是一个提示。

于 2011-02-10T20:17:01.563 回答