Asp.net vbscript未检索所有服务器变量

Asp.net vbscript未检索所有服务器变量,asp.net,vb.net,asp-classic,vbscript,server-variables,Asp.net,Vb.net,Asp Classic,Vbscript,Server Variables,我有一个用VBSCRIPT编写的网站,我正在转到VB.NET。在我有时间重写一些页面/应用程序之前,我想更新一些代码,使它们工作得更好。我试图在VBSCRIPT页面上获取一个服务器变量,其中包含来自企业登录的用户名 我在这里有两个测试页面,一个顶部是language=“VB”,另一个是language=“VBSCRIPT” 服务器变量 当变量在VB页面和所有HTTP中都有数据时,VBSCRIPT页面将列出没有数据的变量。有没有办法让VBSCRIPT收集所有服务器变量的正确信息 多谢各位 编辑

我有一个用VBSCRIPT编写的网站,我正在转到VB.NET。在我有时间重写一些页面/应用程序之前,我想更新一些代码,使它们工作得更好。我试图在VBSCRIPT页面上获取一个服务器变量,其中包含来自企业登录的用户名

我在这里有两个测试页面,一个顶部是language=“VB”,另一个是language=“VBSCRIPT”


服务器变量
当变量在VB页面和所有HTTP中都有数据时,VBSCRIPT页面将列出没有数据的变量。有没有办法让VBSCRIPT收集所有服务器变量的正确信息

多谢各位

编辑:这些变量在VB和VBS之间变化
身份验证用户、远程用户-在VBS上登录的用户、在VB上登录的iis用户
远程_端口-未在VBS中列出

以下列在VBS中,但没有数据
HTTP_服务器_协议
HTTP\u SM\u事务ID
HTTP\u SM\u客户端\u IP
HTTP_请求_方法
HTTP\u SM\u SDOMAIN
HTTP\u SM\u领域
HTTP\u SM\u REALMOID
HTTP\u SM\u AUTHTYPE
HTTP\u SM\u authrason
HTTP\u SM\u UNIVERSALID
HTTP\u SM\u AUTHDIROID
HTTP\u SM\u AUTHDIRNAME
HTTP\u SM\u AUTHDIRSERVER
HTTP\u SM\u AUTHDIRNAMESPACE
HTTP\u SM\u用户
HTTP\u SM\u USERDN
HTTP\u SM\u SERVERSESSIONID
HTTP\u SM\u服务器会话规范
HTTP\u SM\u TIMETOEXPIRE
HTTP_SM_SERVERIDENTITYSPEC
HTTP\u远程用户

此外,我还希望获得一个用于企业身份验证的自定义页面。

这里是我在各种IIS版本上运行的一个经典ASP页面。 对于用户来说,我在我的大多数项目中都有这一点,这使得userinfo在服务器端和客户端都可用。如果您在域中,请用您的域替换DMAIN,否则您可以放弃替换。 必须在IIS站点上启用NTLM安全性(windows身份验证),不允许匿名访问。 此代码返回的Servariables列表因操作系统和IIS版本、启用的功能、设置等而异。某些键将具有空值,因此例如远程端口在我的上不可用(我使用标准80端口),但服务器端口不可用

<%
  Dim user
  user = Replace(uCase(Request.ServerVariables("AUTH_USER")), "DOMAIN\", "")
%>
  <script type="text/javascript">var user = <%=user%></script>

变量用户=
下面是servervariables.asp的内容

<html>
<%@language=VBScript%>
<%
  With Response
    .Expires=-1
    .Clear
  End With
  dim teller
  response.write "<h1>Servervariables</h1>"
  response.write "<table>"
  teller = 1
  for each subkey in Request.Servervariables
    response.write "<tr><td>"
    response.write teller
    response.write "</td><td>"
    response.write (Request.Servervariables.Key(teller))
    response.write "</td><td>"
    response.write (Request.Servervariables.Item(teller))
    response.write "</td></tr>"
    teller = teller + 1 
  next
  response.write "</table>"
  response.write request.servervariables("path_translated") & "<br>"
  response.write "USER cookie:" & Request.Cookies("USER") & "<br>"
  response.write "USER Sessionvariable:" & Session("USER") & "<br>"
%>
</html>

我以前遇到过这个问题,自定义HTTP头在原始头名称中有下划线(可以在
ALL\u raw
服务器变量中看到)。
HTTP\u
将下划线转换为破折号(例如,
HTTP\u USER\u AGENT
对应于名为
USER AGENT
的实际标头)。为了检索名称中带有下划线的任何标题的值,必须使用前缀,该前缀将搜索准确的标题名称(例如,
header\u USER\u AGENT
将搜索名为
USER\u AGENT
的标题)


顺便说一下,提供了更多关于为什么有两个前缀的背景信息。

请参见:是所有变量都没有数据,还是只有一些变量?你有没有办法给我们一个样品(必要时消毒)?
<html>
<%@language=VBScript%>
<%
  With Response
    .Expires=-1
    .Clear
  End With
  dim teller
  response.write "<h1>Servervariables</h1>"
  response.write "<table>"
  teller = 1
  for each subkey in Request.Servervariables
    response.write "<tr><td>"
    response.write teller
    response.write "</td><td>"
    response.write (Request.Servervariables.Key(teller))
    response.write "</td><td>"
    response.write (Request.Servervariables.Item(teller))
    response.write "</td></tr>"
    teller = teller + 1 
  next
  response.write "</table>"
  response.write request.servervariables("path_translated") & "<br>"
  response.write "USER cookie:" & Request.Cookies("USER") & "<br>"
  response.write "USER Sessionvariable:" & Session("USER") & "<br>"
%>
</html>