ASP.NET Web 表单 - 找不到指定的文件

问题描述 投票:0回答:1

我讨厌编写 UI,所以我选择使用这种较旧的技术,因为我有一个内置的图形 UI 设计器。

这就是我正在尝试做的事情:

Process.Start("file:///F:/Dashboard%20Files/Open%20Issues.htm");

当我无缝运行构建时,这是有效的,但由于某种原因,当我发布它时,我在事件查看器中收到此错误:

Exception message: The system cannot find the file specified

我确实在事件日志消息中看到了这一点,也许有人有一个妙语来解决这个问题:

Request URL:       http://investments.com/A00-Home.aspx
Request path:      /A00-Home.aspx
User host address: 10.XXX.XXX.XXX (local 10.* address)
User:
Is authenticated:  False

我的想法是,我需要以某种方式将集成身份验证放入 web.config 文件中。是这个问题吗

尝试过这个:

Process.Start("file:///F:/Dashboard%20Files/Open%20Issues.htm");

得到这个:

Exception message: The system cannot find the file specified

我尝试将其添加到 Web.config 文件中,但仍然遇到相同的错误。

<authentication mode="Windows" />    
asp.net webforms
1个回答
0
投票

所以,你有这个:

Process.Start("file:///F:/Dashboard%20Files/Open%20Issues.htm");

您不能使用以上内容。您可以启动一个进程,但不能启动具有任何 UI 输出的进程。以上实际上是一个命令行过程,并将在您的计算机上启动一个新程序。

就您而言,这是可行的,因为您的开发计算机也是 Web 服务器计算机。

上面的内容与执行这段代码并没有太大的不同:

标记:

        <asp:Button ID="Button1" runat="server" Text="test message"
            OnClick="Button1_Click"                
            />

背后代码:

using System.Windows.Forms;

代码存根:

    protected void Button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Test");
    }

现在的结果是这样的:

这“看起来”与上面的工作原理类似,但是该消息框出现在 Web 服务器计算机上,而该计算机也恰好是运行 Web 服务器、浏览器和后台代码的同一台计算机。因此消息框正在显示,但不是通过浏览器显示。

如果将上述内容发布到网络服务器,那么最终结果将是这样的:

因此,您的消息框将会显示,但当然会显示在网络服务器上!

当您使用 process.start 启动一个全新的单独进程时,也存在同样的问题。

process.start 将启动 Excel、Word 或其他任何程序,但会在服务器上启动该程序,因此该进程的输出当然会出现在位于某个服务器机房的 Web 服务器上。

今天晚些时候我将尝试发布一些其他可能的解决方案,但上面至少解释了为什么尝试在运行 Web 服务器的计算机上退出或启动新进程将不起作用,因为启动这样的进程意味着一个单独的进程Windows 程序,任何输出都不会通过 Web 服务器发送,而是在托管 Web 服务器的计算机上运行。

因此,您当然不能使用 process.start 在我的计算机上运行软件,因为如果当我访问您的网站时您可以在我的台式计算机上运行软件,那么出于安全原因当然没有人会访问您的网站,更糟糕的是,由于安全风险,没有人会使用互联网。

© www.soinside.com 2019 - 2024. All rights reserved.