0

我目前在我的机器上本地托管OSRM以构建路由应用程序。当应用程序启动时,bool ServiceAvailable使用测试查询检查 a 以查看应用程序是否可用并在本地运行。bool如果返回 false ,我希望能够启动 OSRM 应用程序。我找到了一个存在类似问题的StackOverflow 链接并尝试实现它,但应用程序无法加载。这是我当前的代码:

    private void StartOSRMService()
    {
        Process process = new Process();
        process.StartInfo.WorkingDirectory = @"C:\";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.FileName = "cmd.exe";
        process.StartInfo.Arguments = "/c cd users/james/desktop/osrm/osrm-backend/osrm_release";
        process.StartInfo.Arguments = "/c osrm-routed wales-latest.osrm";
    }

该方法已运行,但服务从未启动。Http.Web在其他方法中,由于缺少服务,我的代码由于请求错误而中断。

4

1 回答 1

1

您可以尝试以下方法:

    private void StartOSRMService()
    {
        var startInfo = new ProcessStartInfo(@"C:\users\james\desktop\osrm\osrm-backend\osrm_release\osrm-routed.exe");
        startInfo.WorkingDirectory = @"C:\users\james\desktop\osrm\osrm-backend\osrm_release";
        startInfo.UseShellExecute = false;
        startInfo.Arguments = "wales-latest.osrm";
        Process.Start(startInfo);
    }

有关Process.Start()的更多信息

此外,根据您原来的 StartInfo.Arguments,“ /C”告诉控制台在命令执行后终止,因此,如果“ osrm-routed”是需要在控制台中运行的服务,并且控制台被终止,那么当控制台终止时,应用程序本身也将终止。

于 2016-08-04T13:54:25.880 回答