我正在尝试在我的应用程序中使用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。命名是故意完成的,以避免任何可能的命名冲突。此新服务仍会出现此错误。
对此有何想法?谢谢!
答案 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)
我希望您在重命名服务中的命名空间后更新了服务引用。通常,当客户端代理未使用服务器的最新类型进行更新时,会出现此错误。您可以尝试更新服务引用。