2010-10-29 89 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符合你的性能需求,这是你的错误。