我有一个网络表单,我正在尝试记录谁正在使用它。我所做的所有研究都是关于在本地盒子上使用,而不是通过IIS。
using System.Security.Principal;
private void Form1_Load(object sender, EventArgs e)
{
string curuser = WindowsIdentity.GetCurrent().Name;
}
我在哪里获得输出:
tw.WriteLine(DateTime.Now + ": " + CurUser);
显示输出:
12/1/2017 4:13:18 PM:System.Web.UI.WebControls.Label
我认为这是愚蠢和愚蠢的事情。谢谢你们
注意:我在IIS中为此站点启用了“Windows身份验证”。
答案 0 :(得分:0)
无论CurUser
是什么或哪里,它都是Label
的实例。它是不您在curuser
中声明的Page_Load
变量,然后从未使用过。
当您尝试将对象输出为字符串时,系统会在内部调用该对象上的.ToString()
实现。除非被覆盖(并且Label
不覆盖它),.ToString()
(继承自System.Object
)的默认实现是输出类型的名称。在这种情况下"System.Web.UI.WebControls.Label"
。
(有道理。毕竟,系统如何固有地知道复杂对象,特别是你可以编写的任何自定义对象,应该表示为字符串?)
不输出不相关的对象,输出值:
string curuser = WindowsIdentity.GetCurrent().Name;
tw.WriteLine(DateTime.Now + ": " + curuser);