亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為 HttpRequestMessage.Properties 定義的字典鍵

為 HttpRequestMessage.Properties 定義的字典鍵

C#
PIPIONE 2023-09-16 17:28:18
我到處搜索過,但沒有提到這個鍵的定義位置,或者類似的鍵HTTP_X_FORWARDED_FOR,例如REMOTE_ADDR等。遺憾的是,這些都沒有解決我當前的問題——所有這些字典鍵從哪里來?它們的規范在哪里,以便人們通過查看它們所包含的內容來知道它們的存在并學習使用它們?編輯:我正在使用 .NET Framework 4.6.0,其中 System.Net.Http 的版本是 4.0.0.0。為了獲取客戶端 IP,我正在執行以下操作:public string GetSomeIp(HttpRequestMessage request){? ? HttpContextWrapper context =?? ? ? ?request.Properties["MS_HttpContext"] as HttpContextWrapper;? ? return (context == null) ??? ? ? ?string.Empty : (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]? ? ? ??? context.Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim();}我想找到文檔,它MS_HttpContext詳細解釋了 、 、 以及它們的定義位置REMOTE_ADDR,HTTP_X_FORWADED_FOR這樣我就可以看到所有其他鍵以及它們的實現/正確用法的更多詳細信息。我知道以下服務器變量,但此處沒有提及此處使用的鍵。(除了REMOTE_ADDR)
查看完整描述

1 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

另一種情況與 CORS 和測試有關。您可以克隆此存儲庫并在您要查找詳細信息時深入搜索“MS_HttpContext”事件。但是,我不確定它的文檔。

定義此鍵的位置,或類似的鍵,例如 HTTP_X_FORWARDED_FOR、REMOTE_ADDR 等。

所有這些字典鍵從哪里來?

這些請求的屬性(又名服務器變量)是根據客戶端發送的相應標頭創建的(幾乎是重復的)(適用于 HttpContext - ASP.NET WebForms/MVC)

順便說一句,ASP.NET Core 的 HttpRequest 中不再有此類屬性(僅限標頭)。


如果您需要在 ApiController 內檢索它,可能會更容易(不要忘記所需的空引用檢查和自托管 WebAPI 解決方案):

public class YourApiController : ApiController {

? ? public HttpResponseMessage YourActionName() {

? ? ? ? var request = new HttpContextWrapper(CurrentContext).Request;

? ? ? ? ...

? ? }

}



public class YourAuditHandler : DelegatingHandler {

? ? protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {

? ? ? ? string ipAddress = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";

? ? ? ? ...

? ? }

}


查看完整回答
反對 回復 2023-09-16
  • 1 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號