[英]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.