使用服务时出错:类型名称“AAA”在“YYY.YYY”类型中不存在

时间:2011-10-04 13:17:49

标签: wcf web-services .net-4.0

我正在尝试在我的应用程序中使用WCF 4.0服务。我从头开始构建,测试和部署服务。该服务在WCF测试客户端中工作,可以在我构建的任何其他测试项目中使用。问题是这个特定的应用程序......唯一重要的是因为它是我构建服务的原因。

在引用服务后构建应用程序时,出现错误。错误是“类型名称'AAA'在'YYY.YYY'类型中不存在。”

使用该服务的项目名为“YYY.Web”,位于“YYY”命名空间中。

该服务最初是在“YYY.ReportingService”命名空间中创建的。一旦出现此问题,它已更改为其他命名空间。现在是'MMM'命名空间。

我添加了一个using指令'YYY.Service1'。我也试过别名using指令(使用test = YYY.Service1)

为了确保某些内容没有弄乱我的服务及其命名空间,我用一种方法构建了一个新服务。它接受一个字符串参数并返回“Hello”,并传递任何字符串。此服务也适用于WCF测试客户端和我创建的几个测试项目。此服务位于SimpleTestService命名空间BasicService类中,其名称为GetGreeting。命名是故意完成的,以避免任何可能的命名冲突。此新服务仍会出现此错误。

对此有何想法?谢谢!

5 个答案:

答案 0 :(得分:27)

这个花了我一会儿。事实证明,"The type name 'AAA' does not exist in the type 'YYY.YYY' "是由YYY.YYY引起的 - 我的消费类共享名称及其包含的命名空间。

解决方案:将使用类重命名为不等于其名称空间全名的内容,即YYY.XXX

答案 1 :(得分:2)

我意识到这是老问题,但我刚遇到这个问题而且问题是命名空间冲突。

在我的案例中,AAA被命名为ServiceClient,并且会产生您遇到的相同错误。一旦我删除了名称空间冲突(相反称为ConsoleClient),所有工作都按预期工作。

答案 2 :(得分:2)

我有另一个问题。想象一下两个具有不同命名空间和后续类的项目

项目1

[DataContract(Namespace="SomeNamespace")]
public class A
{
   [DataMember]
   public class B { get; set; }
}

项目2

// Here no DataContract attribute
public class B
{
   //...
}

在这种情况下,您将得到与上述相同的错误。希望这会对某人有所帮助。

答案 3 :(得分:0)

GAC中是否有旧版本的服务DLL?您的应用程序可能正在引用程序集的另一个版本,因此缺少类型。

答案 4 :(得分:0)

我希望您在重命名服务中的命名空间后更新了服务引用。通常,当客户端代理未使用服务器的最新类型进行更新时,会出现此错误。您可以尝试更新服务引用。