爲了您與HTTP觸發Azure的作用下,獲取客戶端IP,你可以使用下面的代碼片段:
run.csx:
#r "System.Web"
using System.Web;
using System.Net;
public static HttpResponseMessage Run(HttpRequestMessage req, TraceWriter log)
{
var address = ((HttpContextWrapper)req.Properties["MS_HttpContext"]).Request.UserHostAddress;
log.Info($"Your client IP: {address}");
return req.CreateResponse(HttpStatusCode.OK, $"Your client IP: {address}");
}
有關詳細信息,你可以請參閱此issue。
,這樣我可以阻止客戶端ip地址了一天,如果用戶將調用API超越嘗試和第二天,我又可以通過採取從隊列存儲在雲中運行的定時器觸發所有的ip地址解除客戶端ip地址的數量。
我寧願使用表存儲來存儲特定IP的訪問日誌。您可以將PartitionKey
列設置爲日期,將RowKey
設置爲ClientIP
或ClientIP + ApiName
,也可以添加其他列(Timestamp,TotalRequests等)。另外,您可以參考Azure Storage Table Design Guide設計您的存儲表。
對於您的天藍色功能,您可以使用Storage table bindings和Table Storage SDK來讀取特定IP的請求日誌並更新特定IP的總請求數。而且,這裏有一個類似的博客,你可以參考here。
UPDATE:
您可以配置日誌存儲在文件系統或Blob存儲 「監控>診斷日誌」 下,如下所示:
對於應用程序日誌記錄(Filesystem),您可以通過kudu找到日誌:
對於應用程序日誌記錄(BLOB),你可以充分利用Storage Explorer取回你的日誌。
如果你想根據他的IP阻止用戶(由於動態IP地址非常不安全),那麼只需存儲此IP地址的最後一次「溢出」訪問,並檢查上次訪問是否過去24小時...對於存儲你可以使用DocumentDB,CosmosDB或RedisCache。也許還有Azure存儲,但我會選擇前者。 – sebastian87