2009-02-26 81 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服務類信息或類似的東西。