在Visual Studio 2010中添加服务引用似乎无法正常工作。

5
答案:问题很简单,我们有一个带有函数的共同库。该服务是由共同库中的某个人尝试的新功能,并且仍然存在于项目所引用的共同库中。这导致项目具有两个相同的命名空间(一个在常见dll中,另一个在服务中)。
起初,我们添加此引用时遇到了权限问题。我们解决了这个问题,但是再次添加引用时,似乎只部分添加了引用。它出现在服务列表中,但不出现在应用程序配置文件中,并且无法使用(智能感知找不到它,手动输入也不起作用)。
如果我们在不同的项目中尝试此操作,则会完全添加,并且我们已经尝试删除可以找到的所有关于引用的内容(子文件夹,在记事本中打开项目并删除所有引用),但是似乎没有任何效果。
当以类似方式将不同的服务删除并重新添加到此项目中时,它可以正常工作,并且我们可以将其添加到同一解决方案中的不同项目中,但不能在此项目中添加。
有人知道为什么会发生这种情况以及可能的解决方案吗?
编辑:当我们在同一解决方案中重新创建项目并拖动所有类等时,我们可以随意添加和删除此引用。虽然这算是一个解决方案,但我实际上想知道为什么会发生这种情况,而不是在事情卡住时重新创建项目。Visual Studio中是否有缓存或其他原因导致此问题?
另外,有时需要更长时间才能找到服务(或永远找不到),而其他时候则可以在<1秒钟内找到它。最好的方法似乎是停止并重新启动搜索。不确定是否相关,但似乎与我使用的PC和其他PC之间存在差异。
编辑2:我们还尝试删除服务文件夹,重新添加服务会重新创建文件夹并添加此引用,但不起作用。如果我们在删除文件夹后添加不同的服务,则该引用确实有效。在此之后再添加我们想要添加的引用不起作用。
编辑3:在另一个项目中,我可以将其添加一次,其中它起作用,但是删除引用然后重新添加它会使其无法工作。类似于此引用的参考文献,我可以在同一项目中多次删除和重新添加,并且它仍然有效。重新添加后,这个引用始终无法找到,会出现“类型或命名空间找不到”的错误。
我们还尝试更改解决方案和项目GUID,但仍然无法正确添加服务引用到项目中。
编辑4:在Configure Service Reference..对话框中关闭引用程序集中的重用类型复选框时,Visual Studio将信息添加到Reference.cs页面,并使该页面为空。取消选中此框确实会将所有引用添加到该文件中,并使服务引用起作用。
但是我可以使用大多数参考文献,我缺少入口点,这意味着我无法运行它。

这是对话框,我需要取消勾选才能继续进行。

对话框的打印屏幕


1
这可能不是同样的问题,但也许可以查看一下这篇文章:http://bursjootech.blogspot.com/2008/06/wcf-type-name-servicereference1-does.html - Mike Cheel
这不是问题,但让我走了很长的路,谢谢。 - Andy
1
我看到了一个区别:ERPFeedService/ERPFeedService.svc -> SNService/SNService.svc?wsdl - Bogdan Maxim
也许你需要使用 ERPFeedService/ERPFeedService.svc?wsdl -> 你的 svc 可能指定了一个不存在或外部的 wsdl。 - Bogdan Maxim
我们已经在另一台电脑上重新运行了该命令,并将其复制到第一台电脑上。一切都正常工作,但更多的时候服务会出现服务器不匹配的情况。多次重复此过程有时可以使其正常工作,但并不像返回类型不匹配那样频繁。 - Andy
3个回答

2
最终真正解决了这个问题。就像Mike Cheel在评论中所说的那样,我会提供链接
问题很简单,我们有一个带有函数的公共库,服务是由此公共库中的某个人尝试的新功能,并且仍然存在于项目引用的库中。
这导致项目具有两个相同的命名空间(一个在公共dll中,另一个在服务中)。
因此,简单地构建一个新的公共dll,将其添加到项目中,现在它完美地工作了。

2

当我使用服务引用时,我发现除了删除服务引用文件夹外,还需要在app.config中删除引用,具体方法如下:

<system.serviceModel>
    <bindings>
    a lot of lines...
    </client>
</system.serviceModel>

可能会有所帮助...
Gorgen


删除Web服务时也会将其删除。我已经进行了完全清理(suo、appconfig、服务文件夹),但仍无法正确添加服务。感谢您的建议。 - Andy

1

我会从删除整个“Service References”文件夹开始,这个文件夹是在Visual Studio添加服务引用时生成的。

你试过了吗?


我们已经尝试过这种方法,它确实可以重新创建文件夹并填充内容,但并不能使服务正常工作。 - Andy
@Andy - 嗯......尝试从磁盘中删除.suo文件(解决方案必须关闭),看看是否有帮助,也许它保存了某种缓存。虽然可能性不大,但谁知道呢.. :) - Shadow The Spring Wizard
我尝试删除所有文件以及 suo 文件,但似乎仍然无法完全添加服务引用。有趣的是,虽然服务引用已添加到服务引用文件夹中,但它不在对象资源管理器中,这与我们第一次将引用正确添加到不同项目时不同。 - Andy
@Andy:奇怪。。那个特定的服务有什么不同吗?也许是特殊的数据类型引起了这种混乱? - Shadow The Spring Wizard
这是一个有大量数据的服务,但除了3个枚举器和大量的字符串/Int32之外,它并没有特别的地方。而且第一次将其添加到新项目中时,它可以完美地工作,只是无法替换或更新。 - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接