.NET 8 WinForms迁移后调用Microsoft Edge打开SSRS报表报错求助
.NET 8 WinForms调用Edge打开SSRS报表报错解决方法
问题原因
.NET Framework中ProcessStartInfo默认启用UseShellExecute,系统会通过Shell识别microsoft-edge:这类URI协议并启动对应程序;但.NET 8(及所有.NET Core后续版本)为了跨平台兼容性,将UseShellExecute默认值改为false,此时程序会把整个microsoft-edge:xxx字符串当作可执行文件路径在工作目录中查找,自然找不到对应文件,导致报错。
解决方案
只需修改代码,手动将UseShellExecute设为true,让系统通过Shell处理URI协议:
方法1:修改原有代码
Process ps = new Process(); ProcessStartInfo psi = new ProcessStartInfo("microsoft-edge:" + sb.ToString()) { UseShellExecute = true }; ps.StartInfo = psi; ps.Start();
方法2:使用更简洁的重载
Process.Start(new ProcessStartInfo { FileName = "microsoft-edge:" + sb.ToString(), UseShellExecute = true });
方法3:直接传入URI对象
如果URL格式合法,也可以直接用URI对象启动:
Process.Start(new Uri("microsoft-edge:" + sb.ToString()));
内容的提问来源于stack exchange,提问作者E. A. Bagby
相关产品推荐
相关产品推荐

