基本上,我有一个服务器端类型"Foo",成员X和Y.每当我使用Visual Studio的"添加服务器参考"时,我看到WSDL和生成的代理都向所有成员附加单词"Field"并更改第一个字母的外壳.IE,"X"和"Y"被重命名为"xField"和"yField".知道为什么会这样吗?我无法弄清楚这种模式.
详细信息 - 我有一个传统的ASMX Web服务,它公开了一个"Foo"类型.我创建了一个新的WCF服务,它是旧Web服务的包装器 - 新服务只包装这些方法并可能更新几个字段的值,但它公开了完全相同的方法并返回完全相同的类型.我曾多次尝试重新创建referenes,每次都会重命名我的字段:变量"STUFF"在wsdl和proxy中显示为"sTUFFField".变量"X"显示为"xField"等.
有趣的是我无法弄清楚模式 - 我尝试创建一个新的ASMX Web服务作为测试和包装 - 变量不会被重命名.所以我无法弄清楚为什么/何时WCF重命名变量的模式.
有人知道吗?
tgr*_*fin 25
我有同样的问题,而sergiosp的回答让我朝着正确的方向前进.只需添加一些额外的信息,希望能帮助别人.
添加[System.ServiceModel.XmlSerializerFormatAttribute()]到界面,并重新生成客户端代码解决了我的问题.
public interface IMyService
{
[System.ServiceModel.XmlSerializerFormatAttribute()]
[System.ServiceModel.OperationContract]
recordResponse GetRecord(recordRequest request);
}
Run Code Online (Sandbox Code Playgroud)
通常,生成的代理将“XField”和“YField”作为内部/受保护/私有字段,并通过称为“X”和“Y”的属性公开这些值。我认为,您可以在创建代理客户端时设置一些选项,以根据您的喜好进行调整。
更新:我似乎没有找到任何开关或选项来控制这种行为。它可能取决于 WCF 用于创建客户端代理的序列化程序(DataContractSerializer 与 XmlSerializer)。
最后,这实际上或多或少只是编码风格的问题 - 从功能上讲,它不应该产生任何影响。
马克
| 归档时间: |
|
| 查看次数: |
9562 次 |
| 最近记录: |