我正在使用Razor Pages(.cshtml)开发一个网站,当用户点击按钮时,该网站使用Process.Start()
异步运行控制台应用程序。我已将事件处理程序连接到进程的Exited
事件,该事件在进程退出时调用。启动进程和处理exited事件都在一个C#类文件(.cs)中完成。处理退出事件时,将评估进程的ExitCode以确定要向用户显示的消息。
目前我正在尝试直接导航到View,其中包含处理和显示url参数的代码。此导航每次都失败。
通过完全删除参数并尝试简单地重定向到页面,我推断出该参数不是问题。
当我尝试HttpContext.Current.Response.Redirect("~/Folder/File.cshtml)
时,我得到了一个
NullReferenceException:未将对象引用设置为对象的实例。
当我尝试将HttpContext.Current
从进行初始Process.Start()
调用的Controller传递给C#类文件以用于Response.Redirect()
时,我得到了
ArgumentException:值不在预期范围内。
事件由进程触发的事实可能无关紧要,因为核心问题似乎是从C#类文件重定向到Razor Page。我的目标是在流程完成后更新Razor View,以通知用户成功或失败。
答案 0 :(得分:1)
为了以符合网络的方式解决这个问题,我建议使用以下方法之一:
在请求中启动进程时,请等待进程完成,然后再将请求返回给客户端。
在这种情况下,使用SignalR是一个很好的选择,因为它支持将消息从服务器推送到客户端。有关SignalR的详细信息和示例,请参阅此link。
基本上,当请求到达服务器时,您就开始处理该项目。将视图返回给客户端,通知用户正在处理该项目。在处理完项目后,将消息推送到客户端。