0

情况就是这样,我有一个控制台应用程序,它需要每天运行一次,并向需要身份验证的页面发出一些请求。这些页面托管在一个非常基本的 ASP.Net Web 应用程序中。

所以,我知道为了让请求成功通过,我必须通过服务器进行身份验证。因此,我已将控制台应用程序连接到我用于 Web 应用程序的 ASP.Net Membership Provider,它成功地确定了一组凭据是否有效。但是,在调用 Membership.ValidateUser() 之后,我提出的任何请求都会得到登录屏幕。在做了一些阅读之后,这似乎是因为我错过了重要的 cookie 信息,这些信息会保留我的登录名或你有什么。

我正在使用基本的 WebClient 来发出请求,然后读取/丢弃结果。

所以问题的实质是:是否有一种简单的方法来验证登录信息并保留它,以便我可以成功发出请求,或者这与我发现的其他两个问题完全相同,需要WebClient 向 login.aspx 页面发出“手动”登录请求并尝试从那里保留 cookie?

我引用的问题是:

从 WPF 应用程序对 ASP.NET MVC 用户进行身份验证

登录网站并使用 cookie 获取另一个页面的来源

4

2 回答 2

0

如果意图是向服务器发送数据和/或从服务器获取数据,那么最合乎逻辑的架构可能是使用 ASMX 或 WCF 创建 Web 服务。然后将服务配置为使用安全令牌,例如用户名令牌或 SAML 令牌。当服务器代码更改其数据模型时,这将使客户端不太可能中断。

否则,如果您只想使用基本的 WebClient,那么您必须找到一种方法将您的凭据传递到登录页面并保留从登录请求返回的登录 cookie。然后,确保登录 cookie 包含在所有后续请求中,类似于您引用的 Stack Overflow 问题“登录网站并使用 cookie 获取另一个页面的源代码”。

于 2011-01-18T17:07:19.900 回答
0

使用 FormsAuthentication,网络服务器必须为您生成 Forms Authentication Ticket。最好的(唯一的?)方法是登录网站,所以我就像其他问题一样登录。

于 2011-01-05T20:32:08.250 回答