.Net Core 打開瀏覽器並轉到指定網址


.Net Core 打開瀏覽器並轉到指定網址

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

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

一、bug重現

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

.Net Core 打開瀏覽器並轉到指定網址

運行然後你就會得到:

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


二、解決方法

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

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

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

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

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

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

方案二:使用cmd中的start命令 可以打開任意形式的URL/<code>
<code>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();/<code>

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


分享到:


相關文章: