簡體   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