我在浏览器上运行Web服务时收到此消息。请注意,源代码是一个windows文件,不能根据我的需要进行更改。
编译器错误消息:CS0104:"Message"是一个不明确的引用介于"ThreeDSeekUtils.Message"和'System.Web.Services.Description.Message'
来源错误:
第263行:void WriteSoapMessage(MessageBinding-MessageBinding,消息消息,bool soap12){objectId=0;SoapOperationBinding soapBinding;
源文件:c: \Windows\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx
在不从Web服务中删除ThreeDSeekUtils和System.Web.Services的命名空间的情况下,如何解决此问题?(我的Web服务Service1.asmx中需要这两个)这个问题以前没有人回答。
您需要调整签名以指定Message
类的显式命名空间:
void WriteSoapMessage(MessageBinding messageBinding,
ThreeDSeekUtils.Message message, bool soap12)
或
void WriteSoapMessage(MessageBinding messageBinding,
System.Web.Services.Description.Message message, bool soap12)
无论哪个合适。另一个选项是在类顶部的using
块中别名名称空间:
using ThreeD = ThreeDSeekUtils;
using ServicesDesc = System.Web.Services.Description;
然后你可以使用缩写形式的别名:
void WriteSoapMessage(MessageBinding messageBinding,
ThreeD.Message message, bool soap12)
或
void WriteSoapMessage(MessageBinding messageBinding,
ServicesDesc.Message message, bool soap12)
一个简单的解决方案是编写具有完整名称空间的方法,如:
void WriteSoapMessage(MessageBinding messageBinding, ThreeDSeekUtils.Message message, bool soap12)
在声明变量时,可以完全限定类名。
不要进行
Message msg = new Message();
Do:
ThreeDSeekUtils.Message msg = new ThreeDSeekUtils.Message();