2010-10-29 41 views

回答

0

它不能。由於您打算從 ASP.NET調用Web服務,因此您正在構建3層應用程序。

第1層是瀏覽器,第2層是ASP.NET Web應用程序。他們共享cookie和會話變量,所以ASP.NET始終可以對用戶進行身份驗證。你已經知道了。

第3層是Web服務。 2和3之間的通信通過不同的HTTP連接完成,共享不同的cookie(實際上不含)和會話變量(再次,實際上沒有,因爲調用是無狀態的)。

你那麼有沒有辦法讓在層級3的Web服務在層級1

無論其驗證客戶端...............

仍然有可能,但只有當您的web服務是本地到您的ASP.NET webapp。這實際上不太可能發生,因爲Web服務是爲遠程調用而非本地調用進行的。我不認爲這是你的情況。

+0

如何爲本地電話設置一個web服務? – user471807 2010-10-29 01:01:42

+0

實際上,您將刪除.asmx文件並僅保留服務的.cs文件。 **我的意思是**,您可以將您的* abstract *服務實現爲Web服務,而不是Web應用程序中的類。您只能在本地打電話。 Web服務技術僅適用於遠程調用。本地服務由常規類實現:)這就是全部 – 2010-10-29 01:04:36

+0

@dkechelon您可以從Web服務獲取Cookie和會話... http://msdn.microsoft.com/en-us/library/aa480509.aspx – Aristos 2010-10-29 01:06:55

0

如果這是一個本地Web服務,按照djechelon的建議,他們將共享您設置的會話狀態。使用djechelon的答案,忽略我的:)

如果不是:請問一個更大的問題:什麼是阻止某人在您的Web應用程序的上下文之外調用您的Web服務:使用像soapUI這樣的工具?

1)鎖定您的服務(使用WCF安全)。 http://msdn.microsoft.com/en-us/library/ms731925.aspx

2)創建一個本地webservice,檢查身份驗證/授權,並調用web服務:傳遞授權信息。

這是一種方法,它重視WS執行冗餘Web服務調用的操作。如果一個叫做另一個的WS符合你的性能需求,這是你的錯誤。