繁体   English   中英

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

[英]determining which server (in a web farm) the asp.net ajax request came from?

我在想如何找出该页面是从哪个服务器提供服务的:我可以这样做,例如在页面上放置一个隐藏变量,该变量具有要处理的服务器的IP或服务器名称。 但是我如何处理asp.net ajax请求:那些作为部分回发发生的请求? 我必须将隐藏变量放在更新面板中,但是如果页面中有很多更新面板怎么办?

我签出了另一个SO post ,但是解决方案是针对iis 7的。iis6等效于什么? 我们如何读取标题? 在哪里看?

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

在此处输入图片说明

您还可以使用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>

这将挂接到页面请求管理器中,以便在Ajax请求完成时,您还可以看到具有响应标头副本的基础XMLHttpRequest对象。

您可以使用jQuery做类似的事情:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM