【问题标题】:how to open new browser window from asp.net handler file?如何从 asp.net 处理程序文件打开新的浏览器窗口?
【发布时间】:2016-03-31 23:50:38
【问题描述】:

下面的代码在 Visual Studio 的调试中运行良好,但是当我将它发布到 IIS 服务器时不起作用。只是什么都没有发生。我猜是一些安全问题。问题是 System.Diagnostics.Process.Start 是否有任何替代方法可以在新窗口或选项卡中打开 url?或者如何使 Process.Strat 在 IIS 中工作? 谢谢

public void ProcessRequest(HttpContext context)
    {
        Context = context;
        if (context.Request.QueryString["path"] == null)
        {
            return;
        }
        string path = Context.Server.UrlDecode(Context.Request.QueryString["path"]);

        var item = DataServer.GetItem(path);
        if (item == null) return;

        System.Diagnostics.Process.Start(item["sourcePath"].ToString());
}

【问题讨论】:

  • 您需要了解客户端代码和服务器端代码的区别。你不能那样做。
  • 你不懂问题和问题。此代码在调试中工作。
  • @ZuluZ 它在调试中工作,因为在调试时,您的服务器和客户端是同一台机器。
  • 没错。您需要了解客户端和服务器之间的区别。

标签: c# asp.net


【解决方案1】:

您的文件正在服务器端打开,这就是客户端什么也看不到的原因。如果您希望您的客户端打开一个文档,那么您需要创建一个响应,在响应中写入文件的内容并指定 mime 类型(在 ContentType 属性中)。这样,客户端的浏览器将确定使用什么程序来打开该文档(例如 ContentType “application/pdf” 使用 Acrobat 打开,“application/msword” 使用 Microsoft Word 打开等)。

见:ASP.NET file download from server 还有http://www.sitepoint.com/web-foundations/mime-types-summary-list/

【讨论】:

  • 很好的例子,谢谢,但是如果我想打开在 IE 中打开的 url 而不是文件呢?
  • 那么内容配置应该是内联而不是附件。在这种情况下,IE 需要有插件才能在浏览器上正确显示该 mime 类型,而不是调用外部应用程序。
  • 问题是虽然我不想打开文件,但想打开aspx页面。
  • 添加一个 aspx 并将生成响应的代码放在页面加载事件中。 Content-Disposition 是内联的。
猜你喜欢
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2014-03-09
  • 2013-10-10
  • 1970-01-01
相关资源
最近更新 更多