无法访问已添加的服务引用。

32

我已经在我的MVC4 Web项目中添加了一个服务引用,并将其保留为默认名称空间“ServiceReference1”,但是当我想要使用该名称空间时,Visual Studio找不到它,就好像它不存在一样,Web服务正常运行。我到底做错了什么?

4个回答

83

我在这里找到了解决方案,就像下面Hoakie提到的那样,以下说明对我有效,现在我的reference.cs已经正确生成:

1)右键单击服务引用

2)选择配置服务引用

3)取消选中“重用引用程序集中的类型”

然后,就可以了!


4
我也用过它,但是有人知道它的意义和为什么有效吗?请翻译。 - Manoj Attal
哎呀,这个问题让我浪费了半天的工作时间,我在整个文件层次结构中搜索了一遍才解决了它!非常感谢你,朋友! - Leonidas
太棒了...由于它没有按预期工作,为什么相应的开发人员将其默认标记?!!!他们只是这样做是为了让许多开发人员浪费半天时间:( - Chakri
在VS 2015中对我有用。很想知道这个解决方案的原因。 - sohaiby
只是补充一下,我发现需要重新启动我的VS。 - Richard Housham
显示剩余2条评论

8

这是由于使用了与类名相同的命名空间名称所致。

将您的命名空间更改为不同于类名的名称,就可以编译通过。


类名为“BaseJob”,命名空间为“SmsPanel”,服务引用命名空间为“ServiceReference1”... - arash moeen
1
我在我的web.config文件中找不到任何服务模型绑定,虽然我不确定mvc 4的结构,但端点不应该被添加到我的webconfig文件中吗? - arash moeen
如果您通过Visual Studio添加了引用,它将自动在web.config中添加必要的内容。 - Reza
好吧,它没有在我的webconfig中添加任何内容,这就是问题所在。 - arash moeen

2
另一个常常被忽视的问题是服务引用会在你提供的服务配置的命名空间后附加你项目的根命名空间。
换句话说,如果你的服务的命名空间是ServiceReference1,实际上创建的命名空间将是[RootNameSpace].ServiceReference1。RootNameSpace通常是你的项目名称,因此在大多数情况下,你只需在服务引用中添加你的[projectname.]即可修复它。如果你的项目名称是MyProject,则命名空间将为MyProject.ServiceReference1。
在记事本中打开csproj(假设是C#项目)文件并搜索“RootNamespace”以查找项目的根命名空间也很简单。

2

查看Visual Studio为您的服务生成的代理类,了解名称空间和类名是什么。


1
我应该在哪里找到这个代理类? - arash moeen
1
你的解决方案中有一个 ServiceReference 文件夹,生成的文件就在那里。 - Reza
如果你在谈论我的解决方案中的服务引用文件夹,那么除了我的服务引用之外,那里什么也没有。 - arash moeen
这是一个网络服务,我在其他项目中使用过它,包括php和asp.net项目,一直运行良好。但在mvc中,这是我第一次使用它,却无法正常工作。 - arash moeen
抱歉,我的错。这是一个WCF服务,因此在我的解决方案资源管理器中有一个服务引用文件夹,而不是Web引用。 - arash moeen
显示剩余5条评论

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