我正在构建一个简单的自托管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>
在客户端,我在Visual Studio中创建一个服务引用并指向此位置。创建服务实例后,我这样做:
MapperServiceClient Test = new MapperServiceClient();
Test.Map("Test.map", "Blah", BAD_HERE);
它说BAD_HERE它正在寻找System.Data.DataSet而不是数组。
我做错了什么?或者这是正确的,我需要做一些花哨的演员才能让它接受一个数组?
答案 0 :(得分:0)
Configure Service Reference dialog box上有一个设置,允许您配置如何处理集合类型。将Collection type
组合框中的值修改为适当的类型(例如数组)。