1

好的,我知道这可能是一个非常基本的问题,但我更像是一个 winform 人。

问题很简单。

如果我们将 System.IO 添加到 Web Form 。然后我们可以使用 StreamWriter 将日志文件写入最终用户计算机吗?

例如,如果 page_Load 使用以下代码:

StreamWriter sr=New StreamWriter("C:\abc.log)

sr.Write("ABC")

那么这个 abc.log 文件是在哪里创建的呢?在网络服务器或最终用户上?如果在 websever 上,那么我们如何在最终用户机器上编写它?

我想在客户端机器上写一个日志文件。什么是选项?使用 cookie 是一种选择吗?

4

7 回答 7

2

不 - 这不是网络的工作方式......您可以将日志显示为下载,这将是最干净的解决方案。

于 2013-07-03T12:10:23.173 回答
2

正如该线程中的每个人都指出的那样:这根本不可能。现在,根据您尝试存储的内容,您可以利用 cookie 在用户计算机上存储一些信息,但这可能很麻烦,并且您只能使用 4K 的信息。话虽如此,HTML5 提供了新的 JavaScript 对象 localStorage 和 sessionStorage,它们基本上是一个键/值字典。我认为 localStorage 可能最适合您的需求,因为它会在浏览器关闭后将信息保留在用户 PC 上。例如:

 function logSomeData(message) {
       localStorage.logFile += message;
 }

 function showData() {
      alert(localStorage.logFile);
 }

如果您在浏览器中运行 logSomeData 函数,请关闭浏览器,然后返回并运行 showData() 函数,您添加到 logFile 的值将被保留。这不是一个新概念,这与今天的 cookie 完全相同,只是 localStorage 更易于使用(在我看来)并且它可以存储更多信息(2MB 到 10MB,具体取决于浏览器)。值得指出的是,这是一项新技术,因此像 IE7 这样的旧浏览器无法使用 localStorage。

如果您有任何其他问题,请告诉我!

于 2013-07-03T12:18:57.930 回答
1

据我所知,您无法使用 asp.net 编写客户端文件。
在您的示例中,您正在编写托管应用程序的文件。

表示应用服务器的 c:\abc.log

于 2013-07-03T12:08:32.423 回答
1

asp.net 中的所有代码都在服务器上运行,因此您发布的代码将写入服务器计算机。

出于安全原因,浏览器不允许与本地计算机文件系统交互

您可以使用其他一些技术(例如网页中托管的 ActiveX 控件)

于 2013-07-03T12:10:23.607 回答
1

为什么要在客户端站点上记录日志文件?

如果您想在客户端站点上存储一些信息,请使用 cookie

于 2013-07-03T12:12:12.723 回答
0

如果您坚持使用 Internet Explorer 6,则能够存储客户端数据的唯一解决方案是使用userData Behavior。它可以让您存储多达 128kb。

我建议你看看jStorage。这是:

一个跨浏览器键值存储数据库,用于在浏览器本地存储数据 - jStorage 支持所有主流浏览器,包括桌面(是的 - 甚至 Internet Explorer 6)和移动设备。

它主要基于 HTML5 本地存储,userData Behavior但当 HTML5 不支持时,它会切换到任何可用的技术(如 )。

于 2013-07-03T12:33:09.100 回答
0

如果您刷新respose对象中的.txt文件,您可以将日志的文本文件下载到客户端计算机,即(response.write)

于 2013-07-04T00:48:28.057 回答