WCF数组始终充当数据集

本文关键字:数据集 数组 WCF | 更新日期: 2023-09-27 18:20:46

我正在构建一个简单的自托管WCF服务,该服务将托管多个产品的映射服务。

这是我的界面:

namespace Eps.Messaging.Mapper.MapperServiceLibrary
{
[ServiceContract]
public interface IMapperService
{
    [OperationContract]
    public MapperOutput Map(String MapperFilename, String Input, GlobalArgument[] InputArguments);
    [OperationContract]
    public List<string> GetAvailableMaps();
}
[DataContract]
public class SymphoniaGlobalArgument
{
    [DataMember]
    public String Name { get; set; }
    [DataMember]
    public String Value { get; set; }
}
}

我只是继承了IMapperService,并根据需要在服务端实现它们。

以下是绑定的配置:

<services>
        <service name="Eps.Messaging.Mapper.MapperServiceLibrary.MapperService">
            <endpoint address="" binding="wsHttpBinding" contract="Eps.Messaging.Mapper.MapperServiceLibrary.MapperService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:8755/Design_Time_Addresses/Eps.Messaging.Mapper.MapperServiceLibrary/MapperService/" />
                </baseAddresses>
            </host>
        </service>
    </services>

在客户端,我正在VisualStudio中创建一个服务引用,并指向这个位置。在创建服务实例时,我这样做:

MapperServiceClient Test = new MapperServiceClient();
Test.Map("Test.map", "Blah", BAD_HERE);

当它说BAD_HERE时,它正在查找System.Data.DataSet,而不是数组。

我做错了什么?或者这是正确的吗?我需要做一些花哨的选角来让它接受一个数组?

WCF数组始终充当数据集

"配置服务引用"对话框上有一个设置,允许您配置如何处理集合类型。将Collection type组合框中的值修改为适当的类型(例如数组)。