【问题标题】:Ambiguous Reference error during runtime compilation运行时编译期间的不明确引用错误
【发布时间】:2009-07-21 17:23:56
【问题描述】:

我最近在我的 web.config 文件中添加了一些命名空间,这样我的所有 aspx 页面都可以引用各种常量和枚举,而无需在每个 aspx 页面上添加导入语句。自从添加了这个,我们现在在尝试测试 asmx Web 服务时遇到错误。似乎在 wsdl 生成期间,我们收到以下错误:

CS0104:“消息”不明确 之间的参考 'System.Web.Services.Description.Message' 和“InsTech.ForeSight.Message”

在研究这个时,我发现在运行时编译期间会调用 DefaultWsdlHelpGenerator.asmx,并且其中有一个具有以下签名的方法:

void WriteSoapMessage(MessageBinding messageBinding, Message message, bool soap12) {

我们在命名空间中定义了一个名为 Message 的对象,它导致了不明确的引用,因为这个 Web 服务文件没有完全限定它们的消息。

如何在不从 web.config 中删除命名空间的情况下解决此问题?我们在虚拟目录的另一个文件夹中拥有我们的 Web 服务,因此我尝试添加一个 web.config,它对命名空间进行了清除,但似乎不起作用。

任何帮助将不胜感激。 谢谢 凯文

【问题讨论】:

    标签: c# .net asp.net


    【解决方案1】:

    您可以在代码中使用命名空间别名并使用它们来区分它们:

    using ourOwn=our.own.namespace;
    

    并将您的消息类称为ourOwn.Message。这样可以避免碰撞。

    【讨论】:

    • 请看我在下面留下的评论。我应该澄清一下,WriteSoapMessage 不是我编写的函数,而是.net 框架的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多