我有一个带方法"GetCustomer“的soap接口,它返回一个customerDto。我想为另一个具有更多信息的客户机创建一个新的接口方法,因此我创建了第二个方法“GetCustomerExtended”,它返回一个以customer对象为父对象的customerExtendedDto。为了重用我的代码,我将子代转换为父代,但它似乎不起作用。soap不返回任何信息。下面是我的代码:
soap类:
public class ShopService : IShopService
{
public CustomerDto GetCustomer(int id)
{
return GetCustomerExtended(id);
}
public CustomerExtendedDto GetCustomerExtended(int id)
{
// Fill result
CustomerExtendedDto result = new CustomerExtendedDto();
result.Id = 1;
result.Name = "foo";
result.Surname = "bar";
return result;
}
}
[ServiceContract]
public interface IShopService
{
[OperationContract]
[FaultContract(typeof(InvalidParameterFaultMessage))]
[FaultContract(typeof(DataNotFoundFaultMessage))]
[FaultContract(typeof(InvalidOperationFaultMessage))]
[FaultContract(typeof(ApplicationLogicFaultMessage))]
[FaultContract(typeof(NotAvailableFaultMessage))]
[FaultContract(typeof(TimeoutFaultMessage))]
CustomerDto GetCustomer(int id);
[OperationContract]
[FaultContract(typeof(InvalidParameterFaultMessage))]
[FaultContract(typeof(DataNotFoundFaultMessage))]
[FaultContract(typeof(InvalidOperationFaultMessage))]
[FaultContract(typeof(ApplicationLogicFaultMessage))]
[FaultContract(typeof(NotAvailableFaultMessage))]
[FaultContract(typeof(TimeoutFaultMessage))]
CustomerExtendedDto GetCustomerExtended(int id);
}Dto:
[DataContract]
public class CustomerDto
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
[DataContract]
public class CustomerExtendedDto : CustomerDto
{
[DataMember]
public strint Surname{ get; set; }
}该方法似乎有效,并且不会抛出任何开销,但答案总是空的。GetCustomerExtended运行得很好,GetCustomer是空的。SOAP UI似乎没有获得任何信息。如果我像这样在"GetCustomer“中填写客户信息,它可以工作:
public CustomerDto GetCustomer(int id)
{
// Fill result
CustomerDto result = new CustomerDto();
result.Id = 1;
result.Name = "foo";
return result;
}这里有什么问题?我怎样才能正确地在这里进行造型呢?
SoapUI日志为:清华Oct 11 11:29:42 CEST 2018: error : request: java.net.SocketException:连接重置清华Oct 11 11:29:42 CEST 2018: error :连接重置参见错误日志详细信息清华Oct 11 11:29:42 CEST 2018:INFO:获取BasicHttpBinding_IShopService.GetCustomer:Request 1响应错误;java.net.SocketException:连接重置
发布于 2018-10-11 18:48:51
我找到了一个解决方案,虽然不是很好,但很管用:
public CustomerDto GetCustomer(int id)
{
CustomerDto customer = Mapper.Map<CustomerExtendedDto, CustomerDto>(GetCustomerExtended(id));
return customer;
}我认为问题在于,该对象仍然是一个"CustomerExtended“对象。它是通过引用调用的,我将customerextended xml返回给soap (或者可能是混合的)。使用automapper,我创建了一个CustomerDto,它工作得很好。
但我仍然很高兴这个问题有了更好的解决方案。
https://stackoverflow.com/questions/52755564
复制相似问题