【问题标题】:How can I use ASP.NET to check if cookies are enabled without having a web page?如何在没有网页的情况下使用 ASP.NET 检查是否启用了 cookie?
【发布时间】:2011-07-06 15:41:22
【问题描述】:

我正在开发一个桌面应用程序,该应用程序可以自动化众多网站并处理返回的数据。此应用程序将在服务器上运行,用户将连接到远程桌面。当服务器没有启用 cookie 时,自动化会中断,我不想让应用程序停止工作,而是想检查服务器设置并告诉用户它为什么不工作。

为此,我决定创建一个 ASP.NET Web 服务。我认为 Web 服务可以存储 cookie,然后尝试访问数据。如果找到数据,则启用 cookie,一切顺利。

我已经阅读了大量的教程,例如:http://www.csharphelp.com/2006/05/c-and-cookies/,其中解释了如何通过 ASP.NET 存储和访问 cookie。然而,所有这些都使用一个网站。用户单击按钮以生成请求,然后 Web 服务可以发送响应。我不知道如何在没有网站的情况下使该过程正常工作,并且我也不希望自动化我自己托管的网站。我觉得我应该能够在我的网络服务上运行一个方法并且它应该可以工作。

有谁知道如何做到这一点?我想要一个可以处理请求和响应的 Web 服务,这样我就可以创建、存储和访问 cookie。感谢您提供的任何帮助。

内森·托恩奎斯特

编辑:

我正在开发一个数据库驱动的应用程序。其中一些是自动化网站,用户在其中输入一些数据,然后程序打开一个 webBrowser 控件,填写表格,然后格式化生成的数据。我想测试是否根据用户的安全权限启用了 cookie,以便我可以禁用自动化并允许用户在需要时自行填写数据。大多数网站都需要 cookie 才能登录。

这将在各种版本的 Windows Server 上运行。默认情况下,我认为 webBrowser 控件与 Internet Explorer 具有相同的安全设置。

【问题讨论】:

  • 此桌面应用程序是否使用 WebBrowser 控件来自动化站点?您是说如果 WebBrowser 控件未启用 cookie,则应用程序会中断?为什么不启用它们?
  • 真的不清楚你在做什么。 Cookie 是客户端(通常是浏览器)而非服务器的功能。如果您正在编写代替浏览器的代码,则由您来确保您的代码正在处理 cookie。
  • 我只是众多开发人员中的一员。应该启用 Cookie,但取决于公司,与我一起工作的人可能是也可能不是网络管理员。通过测试是否启用了 cookie,我不仅可以防止自动化无休止地中断,而且还允许用户查看问题所在,以便进行修复。 IE,我无权启用它们。我希望网络管理员能够修复它,而不是每次出现故障时都会收到错误报告。
  • 所有用户都使用同一个浏览器吗?哪一个?
  • 我相信这都是基于 Internet Explorer 的。 cookie 权限是由服务器管理员设置的。

标签: c# asp.net web-services cookies client-server


【解决方案1】:
var request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/");
request.Method =  "Head";
var response = (HttpWebResponse)request.GetResponse();
var usesCookies = !String.IsNullOrEmpty(response.Headers["Set-Cookie"]);

【讨论】:

  • 该代码告诉我网站是否使用 cookie,但不告诉我是否启用了 cookie。
【解决方案2】:

您可以在注册表中验证这些键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones

在这些键下,您可能会看到一些键,例如 0、1、2、3 ... 每个键都是一个区域配置。

在每个区域中搜索这些条目:

1A02
1A03
1A05
1A06

所以你必须验证这些条目的值是否等于 0。

查看这些链接:

ms kb
question

【讨论】:

  • 我正在编写一个在 Windows Server 上运行的 Windows 窗体应用程序。该应用程序获取数据,然后自动执行 webBrowser 控件。 cookie 问题出在应用程序所在的服务器上。
  • 好的。自动化过程必须是可见的?您“必须”使用 WebBrowser 控件?或者您只需要发出网络请求并处理响应?
  • @nathan-tornquist:是的。你可以做你自己的要求。
  • 这对于特定用户来说是完美的,但如果 cookie 控制是通过组策略完成的,它主要是为我的客户服务的,它仍然会中断。不过,这个想法无疑是朝着正确方向迈出的一步。谢谢。
  • @nathan-tornquist:那么,你能检测到错误吗?如果可以,您可以显示一条错误消息来解释问题。
猜你喜欢
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多