我正在使用web引用来使用web服务问题是十进制属性是可选的,它的值没有传递给web服务。我尝试添加default属性并给它一个默认值,它运行良好,但我不能更改wsdl,因为我有不同的客户端(php、java…客户端)在使用它这个问题在这里描述得很好:msdn post后堆叠气流
因此,我想找到一种方法来更改在创建yhe web引用后生成的代理类的代码,因为我确信这是由这个类错误地处理可选的十进制属性引起的错误。
解决方案1:
- 转到您的项目文件夹->Web引用->MyService
- 在那里,应该有一个名为Reference.cs的文件…这就是创建的文件。它包含Web服务的代理类
此外,如果您不想错误地更新引用并删除对文件的更改,请更新csproj文件中的引用。在项目文件的底部,你会发现你正在使用的所有服务的url。将它指向同一文件夹中的WSDL。
解决方案2:
- 将服务引用添加到您的项目
- 更改项目文件并更新服务的url,将其指向解决方案1中相同文件夹中的wsdl
- 对同一文件夹中的wsdl进行必要的更改
- 更新VS中的引用。。。这将创建一个新的Reference.cs…它将更新代理类
注意:根据对WSDL所做的更改,可能是另一端的web服务无法"读取"您的消息。不过,让财产成为义务财产而不是可选财产不应该破坏它。