确定asp.net ajax请求来自哪个服务器(在Web场中)?

deo*_*oll 2 asp.net iis-6 web-farm

我在想如何找出页面服务的服务器:我这样做是通过在页面上放置一个隐藏变量来实现的,该变量具有来自其处理的服务器的IP或服务器名称.但是我该怎么做asp.net ajax请求:那些发生的部分回发?我必须将隐藏变量放在更新面板中,但如果页面中有许多更新面板怎么办?

我检查了另一个SO帖子,但解决方案是针对iis 7. iis6的等价物是什么?我们如何阅读标题?去哪儿看?

Kev*_*Kev 6

您可以通过IIS MMC设置IIS6自定义标头,方法是打开网站的属性,然后单击HTTP标头选项卡:

在此输入图像描述

你也可以使用adsutil(找到c:\InetPub\AdminScripts):

cscript adsutil set w3svc/1/root/HttpCustomHeaders "X-Served-By:Server-001"

上面的命令将配置默认网站的HTTP标头.

使用时要小心,adsutil因为这会覆盖已配置的任何现有标头.

设置多个标题:

cscript adsutil set w3svc/1/root/HttpCustomHeaders "X-Served-By:Server-001" "X-Powered-By:ASP.NET"

更新:

关于访问客户端上的响应标头,如果您使用的是ASP.NET AJAX更新面板,则将此脚本添加到页面的末尾:

<script type="text/javascript" language="javascript">
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endPageRequest);

  function endPageRequest(sender, args) {

    var allHeaders = args._response._xmlHttpRequest.getAllResponseHeaders();
    var headers = allHeaders.split('\n');

    // At this point you have a string array of response headers.

    // Or you can get an individual header:
    var header = args._response._xmlHttpRequest.getResponseHeader("MyHeader");

  }
</script>
Run Code Online (Sandbox Code Playgroud)

这将挂钩到页面请求管理器,这样当Ajax请求完成时,您还可以看到具有响应头副本的基础XMLHttpRequest对象.

你可以用jQuery做类似的事情:

$.ajax({
  url: "/Home/HeadTest",
  success: function (data, textStatus, xhr) {
    var header = xhr.getResponseHeader("MyHeader");                 
  }
});
Run Code Online (Sandbox Code Playgroud)