C# .Net Core 3.1 中關於Process.Start 啟動Url鏈接的問題


WPF 項目遷移到.Net Core中時居然出了一堆問題...(很無語)

今天在使用的時候居然發現Process.Start居然打不開Url鏈接了? 報 找不到指定文件 的異常?!

一、bug重現

首先以.Net Core 3.1框架 中一個Console項目  打開百度為例:

 

 運行然后你就會得到:

 

 納悶的是,這種方法打開Url在.Net Framework中是沒問題的..

 

二、解決方法

方案一:使用windows系統自帶的資源管理器來打開Url

Process.Start("explorer", "https://www.baidu.com");

你就可以得到一個瀏覽器窗口,打開着百度網頁..

但是如果你的Url復雜一點的話,例如打開百度搜索what

Process.Start("explorer", "https://www.baidu.com/s?wd=what");
explorer表示不干,並直接給你拋了個文件管理器窗口

所以這個方法只可以用於打開簡單的URL...

方案二:使用cmd中的start命令 可以打開任意形式的URL
string url = "https://www.baidu.com/s?wd=what";
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;    //不使用shell啟動
p.StartInfo.RedirectStandardInput = true;//喊cmd接受標准輸入
p.StartInfo.RedirectStandardOutput = false;//不想聽cmd講話所以不要他輸出
p.StartInfo.RedirectStandardError = true;//重定向標准錯誤輸出
p.StartInfo.CreateNoWindow = true;//不顯示窗口
p.Start();

//向cmd窗口發送輸入信息 后面的&exit告訴cmd運行好之后就退出
p.StandardInput.WriteLine("start "+url + "&exit");
p.StandardInput.AutoFlush = true;
p.WaitForExit();//等待程序執行完退出進程
p.Close();

OK

 

以上的問題我只在Windows平台上找到過,不知Linux和OSX有沒有...

 

Thanks


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM