繁体   English   中英

.Net Web服务,如何访问…?

[英].Net webservice, how to access…?

注意:我只是在使用Web服务,而无法控制Web服务代码。

因此,在.net 2.0中,我引用了Web服务,并在Web服务名称空间中看到了一个类,例如foobar。 定义为:

public class foobar : System.Web.Services.Protocols.SoapHttpClientProtocol

但是在.net 3.5中,当我添加对同一Web服务的引用时,我不再具有此foobar类。 我确实看到了foobarSoap,它是一个接口,它公开了上面foobar类中的所有方法。 定义为:

public interface foobarSoap

但是,它不公开属性(出于明显的原因)。

我需要访问这些属性。 我该怎么做?

您可以尝试使用Web服务描述语言工具Wsdl.exe )生成实际的类文件:

wsdl.exe /language:cs http://www.example.com/FooService.wsdl

您可以在MSDN Page上获得有关WSDL工具的更多信息。

我有一个偷偷摸摸的感觉,这些属性将不会成为服务定义(WSDL)的一部分,这意味着您可能无法使用它们。 如果可能,请尝试说服谁维护服务,以将属性公开为实际方法。

很可能您将无法访问属性,在这种情况下,您可能会很不幸。 抱歉。

我将尝试公开一个属性,然后在此处报告结果。

编辑:无法使用WCF公开接口属性,它将根本无法编译

[ServiceContract]
public interface IFooService
{
    [OperationContract] // This is not allowed, it will not compile
    string Name { get; set; }
}

编辑:不能使用ASMX Web服务完成。 :(

[WebService(Namespace = "http://tempuri.org/")]
public class FooService : System.Web.Services.WebService
{
    [WebMethod] // This is not allowed, it will not compile
    string Name { get; set; }
}

我刚刚创建了一个示例项目,并使用“添加服务参考”菜单创建了该服务的Web代理:

http://www.xmlme.com/WSShakespeare.asmx

Visual Studio 2008基于WSDL生成了一个接口和一个代理类。 例如,我有一个ShakespeareSoapClient类,该类实现了ShakespeareSoap接口。

似乎工作正常。 我错过了什么吗?

从2005年升级到2008年时,我遇到了类似的问题。我想您所缺少的是,当您单击“添加服务参考”时,会出现一个新的对话框。 单击底部的“高级”按钮,然后在出现的下一个对话框中,在兼容性部分的底部,单击底部的“添加Web参考”按钮。 然后,您将获得最可能使用的对话框,并将具有标准的2.0代理类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM