第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

通過(guò) C# 控制臺(tái)執(zhí)行時(shí)如何處理 NPM/Newman 失敗/掛起

通過(guò) C# 控制臺(tái)執(zhí)行時(shí)如何處理 NPM/Newman 失敗/掛起

C#
動(dòng)漫人物 2022-12-04 11:12:50
我有在 C# 中創(chuàng)建的方法(如下所示),它通過(guò) C# 控制臺(tái)應(yīng)用程序執(zhí)行一些 npm/newman 命令。當(dāng)前代碼會(huì)處理 cmd 掛起/失敗的情況,但不會(huì)處理 nmp/newman 執(zhí)行掛起或失敗的情況。你能幫忙嗎?public string Runner ()    {        var psiNpm = new ProcessStartInfo        {            FileName = "cmd",            RedirectStandardOutput = true,            RedirectStandardInput = true,            UseShellExecute = false        };        var pNpmRun = Process.Start(psiNpm);        pNpmRun.StandardInput.WriteLine("npm install -g newman");        pNpmRun.StandardInput.WriteLine("newman run " +            "\"C:\\Postman\\Test.postman.json\" " +            "--folder \"TestSearch\" " +            "--environment \"C:\\Postman\\postman_environment.json\" " +            "--disable-unicode");        pNpmRun.StandardInput.WriteLine("exit");          var tenMin = 10 * 60 * 1000;          if(pNpmRun.WaitForExit(tenMin)) {             return pNpmRun.StandardOutput.ReadToEnd();          } else {             pNpmRun.Kill();             throw new TimeoutException("Command didn't complete in 10 minute timeout");          }    }
查看完整描述

1 回答

?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以檢查您的npm和newman命令的退出代碼并將它們返回給調(diào)用進(jìn)程:


public string Runner ()

    {

        var psiNpm = new ProcessStartInfo

        {

            FileName = "cmd",

            RedirectStandardOutput = true,

            RedirectStandardInput = true,

            UseShellExecute = false

        };

        var pNpmRun = Process.Start(psiNpm);

        pNpmRun.StandardInput.WriteLine("npm install -g newman");


        pNpmRun.StandardInput.WriteLine("if not "%ERRORLEVEL%" == "0" exit 1");


        pNpmRun.StandardInput.WriteLine("newman run " +

            "\"C:\\Postman\\Test.postman.json\" " +

            "--folder \"TestSearch\" " +

            "--environment \"C:\\Postman\\postman_environment.json\" " +

            "--disable-unicode");


        pNpmRun.StandardInput.WriteLine("if not "%ERRORLEVEL%" == "0" exit 2");

        pNpmRun.StandardInput.WriteLine("exit 0");


          var tenMin = 10 * 60 * 1000;

          if(pNpmRun.WaitForExit(tenMin)) {

             var exitCode = pNpmRun.ExitCode;

             if(exitCode != 0) {

               throw new Exception("Command failed " + exitCode);

             }

             return pNpmRun.StandardOutput.ReadToEnd();

          } else {

             pNpmRun.Kill();

             throw new TimeoutException("Command didn't complete in 10 minute timeout");

          }

    }

在每個(gè)命令之后檢查errorlevel,這是一個(gè)“虛擬環(huán)境變量”,代表前一個(gè)命令的退出代碼。如果它不是 0(通常是成功),那么它將退出cmd進(jìn)程并返回到您的 C# 代碼。您的 C# 代碼檢查ExitCode進(jìn)程的狀態(tài),如果不成功 (0),它會(huì)拋出一個(gè)包含 ExitCode 的異常,以便您知道這兩個(gè)命令中的哪一個(gè)失敗了。這依賴于npm和newman進(jìn)程在失敗時(shí)返回非零退出代碼。


那應(yīng)該處理“失敗”。處理“掛起”會(huì)更加困難。實(shí)際上沒(méi)有任何方法可以知道該過(guò)程是否會(huì)返回(閱讀:停止問(wèn)題(我在大學(xué)學(xué)到的一件事))。


查看完整回答
反對(duì) 回復(fù) 2022-12-04
  • 1 回答
  • 0 關(guān)注
  • 208 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)