gpt4 book ai didi

.net - 当我使用 "Add Service Reference"时,我看不到可选的方法参数

转载 作者:行者123 更新时间:2023-12-04 06:50:56 24 4
gpt4 key购买 nike

我正在开发 WCF 服务。我有一个服务操作Function getValues(Optional verbose as Boolean) as List(of String) .

这有效:

' First, add a file reference that contains the iRM interface.
Dim ep3 As EndpointAddress
ep3 = New EndpointAddress("net.pipe://localhost/RM/RMPipe")
Dim netPipeRMClient As RMLib.iRM netPipeRMtClient = ChannelFactory(Of RMLib.iRM) _ .CreateChannel(New NetNamedPipeBinding, ep3)


dim foo as List(of String) = netPipeRMClient.getValues()

但是,这不起作用:

' Use Add Service Reference to get the client type... Dim ep3 As EndpointAddress
ep3 = New EndpointAddress("net.pipe://localhost/RM/RMPipe")
dim netPipeRMClient as RM.iRMClient = _
new RM.IRMClient(New NetPipeBinding, ep3)
Dim foo as List(of String) = netPipeRmClient.getValues()



在最后一行,我收到一个编译时错误,显示“未为参数 verbose 指定参数”。
verbose参数在我的方法签名中明确定义为可选,但在我的 WCF 服务契约(Contract)中,当我使用使用“添加服务引用”创建的客户端时,它似乎不是可选的。

有任何想法吗?

最佳答案

可选参数是 .NET 特定的功能 - WCF 服务本质上是可互操作的,因此您不能依赖 .NET 的细节。

您在 WCF 中交换的任何内容都基于 XML 模式和 WSDL。据我所知,WSDL 不支持可选参数。 WCF 及其底层管道不知道这些东西 - 所以你不能在 WCF 服务中使用它们。

您需要找到一种在 WCF 服务调用中不使用可选参数的方法。

还有一些 WCF/SOA 做得不好的事情,在 OOP/.NET 中完全没问题——比如运算符重载、接口(interface)、泛型等——你总是必须考虑到 WCF 的设计目的是可互操作的 SOA 平台,例如它必须能够与其他语言和系统对话,例如 PHP、Ruby 等——其中一些不支持 .NET 的所有细节。

SOA 和 OOP 有时是不一致的——这只是生活中的事实。如果您想使用 SOA 和 WCF(我强烈支持这种方法),那么您需要愿意“以 SOA 方式来做”——即使这与您在 .NET 中可以做的事情和OOP 实践可能会建议。

关于.net - 当我使用 "Add Service Reference"时,我看不到可选的方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com