【问题标题】:Using ASP.NET MVC, is it possible to execute a WPF .exe file after downloading it?使用 ASP.NET MVC,是否可以在下载后执行 WPF .exe 文件?
【发布时间】:2020-04-24 19:50:54
【问题描述】:

我有一个带有按钮的 ASP.NET MVC Web 应用程序,用于为现有 WPF 应用程序下载 .exe 文件。它下载正常,但是在浏览器窗口中单击时,它不会执行。我该如何解决这个问题?

[HttpGet]
public FileResult downloadFile() 
{
    var fileName = string.Format("MyApp.exe", DateTime.Today.Date.ToString("dd-MM-yyyy") + "_1");
    var tempOutPutPath = Server.MapPath(Url.Content("~/File/")) + fileName;

    byte[] finalResult = System.IO.File.ReadAllBytes(tempOutPutPath);

    if (System.IO.File.Exists(tempOutPutPath))
        System.IO.File.Delete(tempOutPutPath);

    if (finalResult == null || !finalResult.Any())
        throw new Exception(String.Format("No Files found"));

    return File(finalResult, System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName(fileName));
}

【问题讨论】:

  • 您有权访问您的 wpf 项目吗?您能否检查是否有 BIN/DEBUG 目录 - 并检查那里是否有 DLL 文件。让我知道你看到了什么。

标签: c# asp.net-mvc wpf


【解决方案1】:

这是一个安全问题,所以我会拒绝。想象一下,如果恶意网站上的链接可以在最终用户的电脑上下载并运行程序,那将是一场灾难。

不知道您为什么需要它,但如果您需要从浏览器启动您的 wpf 应用程序。然后,您可以创建一个链接来引用指向您已安装的应用程序的 uri 方案。您必须在安装例程或应用程序中的一次性作业期间将其添加到注册表。 Registering an Application to a URI Scheme in windows 10

希望这会有所帮助 我认为这是从浏览器运行应用程序最接近的方法。但无法让它在下载后自动启动。

【讨论】:

    【解决方案2】:

    像 matcsr 指出你不能强迫用户执行他们下载文件夹中的文件。但是,如果您想要从 Web 分发 WPF 应用程序,那么您需要设置 ClickOnce Web 部署。更多信息在这里:Choose a ClickOnce deployment strategy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多