You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC调用.NET控制台应用失败:自定义URI协议问题

从ASP.NET Core MVC Web应用启动.NET控制台应用失败问题

我尝试从ASP.NET Core MVC Web应用中启动一个.NET控制台应用,希望无需知晓文件路径就能远程启动它。已经在注册表中创建了对应键值,但点击Web应用中的启动链接时,控制台应用启动失败。

控制台应用代码

using Microsoft.Win32;

Console.WriteLine("Listening.."); // 获取文件当前下载位置   

var loc = System.Reflection.Assembly.GetExecutingAssembly().Location;

if (!Directory.Exists(@"C:\Console\"))
{
    System.IO.Directory.CreateDirectory(@"C:\Console\");
} // 在指定文件夹创建下载目录  

if (!File.Exists(@"C:\Console\" + loc.Split('\\').Last()))
{
    File.Move(loc, @"C:\Console\" + loc.Split('\\').Last());
}

var KeyTest = Registry.CurrentUser.OpenSubKey("Software", true).OpenSubKey("Classes", true);
RegistryKey key = KeyTest.CreateSubKey("alert");
key.SetValue("URL Protocol", "wnPing");
key.CreateSubKey(@"shell\open\command").SetValue("", @$"C:\Console\{loc.Split('\\').Last()} %1");

MVC视图(index.cshtml)代码

@{ 
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <p><a href="alert:wmPing?id=string">在控制台应用中打开</a>.</p>
</div>

相关信息

  • C:\Console\目录内容:目录下存在控制台应用的可执行文件
  • 注册表配置:已在HKEY_CURRENT_USER\Software\Classes下创建alert项,设置了URL Protocol值为wnPing,并在shell\open\command路径下配置了启动命令
  • 启动错误:点击Web应用中的链接后,系统弹出提示无法找到对应应用,要求检查路径并重试

排查与解决建议

  1. 校验注册表启动路径
    检查shell\open\command中的可执行文件路径是否与C:\Console\下的文件名完全一致,若路径包含空格,必须用双引号包裹,格式应为:"C:\Console\你的应用文件名.exe" %1

  2. 修正文件移动逻辑
    当前代码启动时会将自身从原路径移动到C:\Console\,移动后原路径文件消失,若注册表写入时用的是移动前的路径,后续启动会失败。建议改为复制文件而非移动,或者确保注册表写入的是移动后的最终路径:

    // 替换原File.Move代码
    var targetPath = Path.Combine(@"C:\Console\", Path.GetFileName(loc));
    if (!File.Exists(targetPath))
    {
        File.Copy(loc, targetPath, true);
    }
    // 注册表写入时直接用targetPath
    key.CreateSubKey(@"shell\open\command").SetValue("", $"\"{targetPath}\" %1");
    
  3. 检查浏览器权限
    部分浏览器会拦截自定义URL协议的启动请求,需在浏览器弹窗中选择允许启动该应用

  4. 测试无参数启动
    暂时将注册表中的启动命令改为只启动可执行文件(去掉%1参数),测试是否能正常启动,排除参数解析问题

内容的提问来源于stack exchange,提问作者Sofiane Hachemaoui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:08:10