我有以下 Azure 函數,由于訪問被拒絕而失敗 (忽略邏輯很奇怪的事實,我只是在做第一個測試)public static void Run(TimerInfo myTimer, ILogger log){ List<string> servers = new List<string>() { "server1" }; foreach(string server in servers) { if (!Ping(server)) { SendEmail($"Server {server} seems down.", log); } }}static bool Ping(string hostName){ Ping pingSender = new Ping(); int timeout = 120; PingReply reply = pingSender.Send(hostName, timeout); return reply.Status == IPStatus.Success;}static void SendEmail(string message, ILogger log){ log.LogInformation(message);}如果我改變線路PingReply reply = pingSender.Send(hostName, timeout);return reply.Status == IPStatus.Success;為了return true;測試,該功能運行良好。我需要配置什么才能讓該函數執行 ping 操作?
1 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
據我所知,我們無法在Azure功能中成功執行ping操作,因為Azure中不允許使用ICMP協議。但我們可以在其中進行tcpping。您可以在Azure功能控制臺中測試它(如下截圖所示):
我們還可以安裝一些工具來進行 ping 操作,例如 PsPing、Nmap 或 Telnet。
這是更新內容:
根據一些研究,我認為Azure Function可以滿足您的要求。
首先,我們應該安裝 psping。
然后解壓縮 psping 文件并在 Azure 函數中打開 Kudu。
然后點擊“調試控制臺”-->“CMD”-->“site”,新建一個名為“tools”的文件夾,點擊“tools”并將你的 psping 文件(PSTools)拖到“tools”文件夾中。
之后,請參考我下面發布的代碼
如果 ping 成功,我的代碼中的變量“err”將不會顯示任何內容。如果 ping 失敗,則會顯示錯誤。所以你可以根據它來判斷成功。
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消