2011-06-14 75 views
3

我編寫了一個具有2種方法的ASP.NET Web服務。 這些運行良好,並顯示在http://localhost:85/Services/NopService.asmx?WSDLwebservice中的其他方法未顯示

如果我添加另一種方法,我不能訪問新的!

相關文件位於D:\ Web \ NopCommerceStore \ Services \ NopService.asmx和..asmx.cs中 沒有其他任何名稱的文件在任何地方!

如果我只需添加喜歡的另一種方法:

[WebMethod] 
public string Hi(string you) 
{ 
    return "Hi " + you; 
} 

並導航到http://localhost:85/Services/NopService.asmx?WSDL 新方法沒有顯示出來 - 即使經過: 重新啓動IIS 清除temp.asp.net文件夾 明確的哈希值。 web

如何使用新方法更新我的Web服務?

謝謝!

+2

你編譯了新的代碼嗎? – 2011-06-14 08:11:28

+1

添加新方法後編譯了Web服務嗎?確保編譯時不會出錯。 – 2011-06-14 08:12:10

回答

1

正確的方法是通過右鍵單擊客戶端ASP.NET項目中的App_WebReferences文件夾並選擇「更新Web /服務引用」選項。這將導致IDE去抓取最新版本的後端Web服務定義文件。

右鍵單擊App_WebReferences文件夾並更新Web引用時,實質上是更新了ASP.NET應用程序正在使用的所有Web服務的定義。這意味着如果你有幾個不同的Web服務的引用,它會去每一個都得到一組更新的定義。在您只想更新一個Web服務定義(即您知道已更改的定義)的某些情況下,這可能不是必需的。

2

重新編譯你的web服務代碼,然後更新它在項目中的引用調用它。

2

確保您發佈的內容的.dll不在GAC中。我有一個類似的問題,花了好幾天的時間試圖找出答案。事實證明,這是在GAC中,一個簡單的gacutil/q/f和應用程序池的回收修復了它。

5

如果您已從其他項目中複製.asmx文件,請務必更改代碼隱藏文件和標記中的命名空間(右鍵單擊.asmx文件並選擇「查看標記」)。

否則,標記文件將具有指向前一個項目的Class屬性。如果您之前的項目仍然存在於您的系統中,則無論您在新代碼隱藏文件中做了什麼,都會引用其方法。

+0

是的,這讓我從痛苦中解脫出來。 – Oofpez 2013-04-03 12:50:05

1

右鍵單擊解決方案資源管理器中的服務並更新Web服務。我檢查過。

1

欺騙我,並沒有看到我在WSDL中的變化的事情之一 - 我有多個Visual Studio實例打開不同版本的相同的解決方案,它是從不同的實例中選擇舊版本。

相關問題