2009-02-26 42 views
1

好吧,我有一个ASP.Net网站项目。该项目驻留在网络上的服务器上,通过文件共享由Visual Studio 2008访问。ASP.net Web服务和智能感知

在网站项目中,我添加了一个Web引用到我以前创建的web服务。
我可以通过winforms应用程序使用这个web服务而没有任何问题。

但是,当我尝试在我的代码中引用Webservice时,没有出现任何智能感知,并且服务名称在Visual Studio中获得红色下划线,并且说s“找不到类型或命名空间名称'IMWebService'一个程序集引用或使用指令?“但是,如果我知道web服务方法的确切方法签名,我可以输入它,将其保存到网络服务器,并且它工作得很好。例如:

bool test = Contractor.CheckLogin(email, password); 

如何让我的Visual Studio识别服务,就像网站正在做的一样?

回答

4

我遇到过这个问题,只能隔离到通过“Web引用”创建的类。一种解决方案是清理bin和obj文件夹并重新启动Visual Studio。这并不总是奏效,所以也许这不是一个“解决方案”,但有时候Intellisense会在那之后提起。我也尝试打开W​​eb服务的自动编码并修改它,然后保存。这似乎启动Intellisense观看该文件。我所做的任何事似乎都没有影响。

+0

清理bin文件夹和重建都有诀窍。现在+1,因为我还有7天的时间可以选择,我可能会深入研究这一点。 – 2009-03-02 20:20:28

1

检查命名空间,可能会有问题。如果你输入全名,请在它下面寻找小红框。

如果它不起作用,您可能会破坏Intellisense,因为我每天都在使用它,并且它可以正常工作。

+0

如果命名空间是一个问题,那么它也不会编译。它不像intellisense可以一起打破,它仍然适用于其他类型/命名空间,它不适用于Webservices – 2009-03-02 19:28:30

0

把下面一行在你的代码文件的顶部:

using Contrator; 

如果Visual Studio中没有提供智能感知尚未代码编译当您使用完全合格的名字,那么你可以相当有信心,加入using语句中的命名空间将解决该问题。

如果您没有在文件顶部指定的名称空间,IDE不知道如何解析该类型。

+0

这不是事实,但是Intellisense可以正常工作,而不必对命名空间使用“using”。 Intellisense遵循与编译器有关搜索类的相同规则。 – 2009-03-02 19:34:46

+0

是的,但是OP在收到错误时只输入了类名 - 如果他使用了全名,那么一切都很好。 – 2009-03-02 19:44:25

+0

通常情况下(这种情况以外)智能感知没有命名空间声明正常工作 - 尝试它。只要类可以通过编译器解决,intellisense也应该选择它。 – 2009-03-02 19:46:13

1

你可以尝试拉自动生成web服务客户端代码VS让你从临时区域,并把它添加到你的实际项目

1

使用Web应用程序项目,而不是网站。

文件 - >新建 - >项目 - > C# - >网络 - > ASP.NET Web应用程序

这将解决你的问题以及其他问题。

该网站项目是旧的,不起作用。

1

为了帮助缩小问题的范围:

  • 你有使用VS项目通过UNC路径检查代码访问策略?
  • 你是否收到任何有关使用文件共享打开不可信代码的警告?
  • 如果您在本地运行所有代码,是否会得到相同的行为?
1

一旦我遇到同样的问题,我只需右键单击Visual studio中项目资源管理器中的refrence文件夹,选择刷新,然后2或3分钟后,intelisense出现并正常工作。我认为它需要一些时间来下载架构和Web服务类信息或类似的东西。