我目前的 SOAP WCF 服务之一遇到了一些非常奇怪的问题。问题是 Visual Studio 中的 ServiceReference-Tool 改变了我的一些方法的参数。
例如:
如果这是我的接口定义(摘录):
namespace ****.PrimeTime.PrimeTime
{
[ServiceContract]
public interface IPrimeTimeWS
{
[...]
[OperationContract]
****.PrimeTime.BusinessObjects.CostDataset ReadCost(****.PrimeTime.BusinessObjects.SearchCostDataset searchDataset, ****.Framework.SharedComponents.Paging pagingInfo);
[OperationContract]
****.PrimeTime.BusinessObjects.CostDataset WriteCost(****.PrimeTime.BusinessObjects.CostDataset data, bool modifyRowState);
}
}
这是我的服务定义(摘录):
namespace ****.PrimeTime.PrimeTime
{
public class PrimeTimeWS : IPrimeTimeWS
{
[...]
public ****.PrimeTime.BusinessObjects.CostDataset WriteCost(****.PrimeTime.BusinessObjects.CostDataset data, bool modifyRowState)
{
[...]
}
public ****.PrimeTime.BusinessObjects.CostDataset ReadCost(****.PrimeTime.BusinessObjects.SearchCostDataset searchDataset, ****.Framework.SharedComponents.Paging pagingInfo)
{
[...]
}
}
}
,wsdl文件是正确的(WriteCost有两个参数,CostDataset和bool)。
但是当我在客户端中添加服务引用时,它看起来像这样:
ReadCost 方法按预期工作,问题是在所有(!)我的 Write 方法中,任何其他数据集都被 TimeDataDataset 替换。这不会发生在除写入方法之外的任何其他方法中,无论使用哪些数据集。
我已经解决这个问题将近一天了,但无法取得任何改善。
我已经尝试过:
- 删除和重新创建服务参考
- 清理和重建服务和客户端
- 将服务引用添加到空项目 -> 发生同样的事情
- CostDataset 看起来与 TimeDataDataset 或任何其他数据集(结构上)没有任何不同
- 如果我手动更改 Reference.cs 以使参数正确,那将起作用,但只要我不更新服务参考,就会覆盖我的更改。
有任何想法吗?如果你需要更多的源代码,我可以提供,我只是不想把所有的代码都放在这里,因为那有点太多了......