WCF服务不能从另一个类返回结构
本文关键字:返回 结构 另一个 服务 不能 WCF | 更新日期: 2023-09-27 18:14:29
所以我目前正在编写一个新的WCF服务,它应该在调用其中一个函数时返回一个Struct。结构体保存在共享类中,因为它在程序的其他区域中使用。
结构体如下所示(注意,它位于VB中)。. Net类,部分项目是c#):
<DataContract()>
Public Structure WrapperResults
<DataMember()>
Dim Success As Boolean
<DataMember()>
Dim ErrorMessage As String
End Structure
现在在我已经设置的WCF服务中,我有一个简单的测试函数,看起来像这样:
public class TFXEmailProcessor : Wrapper
{
public MQShared.Functions.WrapperResults CallWrapper(string AppName, string Password, string ConfigXML)
{
MQShared.Functions.WrapperResults results = new MQShared.Functions.WrapperResults();
results.ErrorMessage = "TFX Test";
results.Success = true;
return results;
}
}
在另一个类中,我添加了一个引用到我的WCF服务,并尝试这样调用它:
Dim myBinding As New BasicHttpBinding()
Dim endpointAddress As New EndpointAddress(WP.MyWrapper(x).WrapperURL)
Dim SR As New WrapperService.WrapperClient(myBinding, endpointAddress)
Dim WrapResults As MQShared.Functions.WrapperResults = SR.CallWrapper(AppName, Password, WP.MyWrapper(x).ConfigXML)
然而,SR.CallWrapper函数被智能感知突出显示,我得到错误Value of type 'FunctionsWrapperResults' cannot be converted to 'Functions.WrapperResults'
(注意FunctionsWrapperResults中缺失的时期)
我在这里错过了什么吗?
通过让编译器计算返回值而不是特别声明为
修复了此问题Dim WrapResults As MQShared.Functions.WrapperResults
我现在简单地声明函数调用为:
Dim WrapResults = SR.CallWrapper(AppName, Password, WP.MyWrapper(x).ConfigXML)
有两种方法可以调用WCF服务。代理和通道。
在Proxy中,您可以使用 add service Reference…这样,代理类自动生成。你不能使用你的共享类。因为,共享类再次作为代理生成。
如果你可以使用共享类,你必须选择通道方式。在通道中,将ServiceContact(接口)和DataContract添加到客户端项目中。
使用c#
var address = new EndpointAddress("..."); // Service address
var binding = new BasicHttpBinding(); // Binding type
var channel = ChannelFactory<IService>.CreateChannel(binding, address);
MQShared.Functions.WrapperResults WrapResults = channel.CallWrapper(string AppName, string Password, string ConfigXML);