【问题标题】:Getting Client username in VB.Net在 VB.Net 中获取客户端用户名
【发布时间】:2015-06-12 18:39:39
【问题描述】:

我正在尝试从 VB.Net 应用程序获取客户端域\用户名。

当我使用时

System.Security.Principal.WindowsIdentity.GetCurrent().Name

我得到了我想要的结果。但只有在通过visual studio / iisexpress在本地运行时 但是当我尝试将它放在我的 IIS 7.5(在 Windows 2008 服务器上)时,程序将在运行这行代码时停止。它只是停止。

使用这个

on Error GoTo test_Error

test_Error: 
Error_Handler(writes errors to a sql log) 

错误未被捕获。

那么发生了什么? 谢谢!

更新: 在此处使用“Try-catch”

            Try
               MsgBox(System.Security.Principal.WindowsIdentity.GetCurrent().Name)
            Catch ex As Exception
               MsgBox(ex.Message)
            End Try

仍然无法显示错误消息(Chrome 浏览器,是的,弹出窗口已启用)

使用 chrome 开发者工具,我发现这是错误:

Sys.WebForms.PageRequestManagerServerErrorException:处理服务器上的请求时发生未知错误。服务器返回的状态码是:500

【问题讨论】:

  • IIS站点配置了哪些认证方式?
  • 另外,这是一种非常糟糕的错误处理方式。查看 Try / Catch 块。
  • "It just stops" - 您如何确认正是这个确切的陈述导致了问题?
  • 你能代替标签只做尝试 - 捕捉并获得真正的错误信息吗?
  • @Christopher:是的,我相信WindowsIdentity 真的只对 Intranet 应用程序有用。正如您所提到的,它不适用于“外部”用户,例如通过手机浏览的人。如果 Web 应用程序可供全世界访问并需要登录,您可能需要查看 ASP.NET Membership Provider 或 ASP.NET Identity 等选项。

标签: asp.net vb.net visual-studio-2012 iis


【解决方案1】:

试试这个 -

Request.ServerVariables("AUTH_USER")

这将返回经过身份验证的原始用户名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2020-12-17
    • 2017-03-10
    • 2013-08-09
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多