【发布时间】:2017-11-20 16:46:33
【问题描述】:
我正在开发一个在本地工作的 kludge,但在我将其部署到我们的服务器后却没有。
我有一个网页打开,运行
EXE,然后关闭网页。这在本地有效,但在发布到服务器后,EXE不会运行。我已确认文件路径在服务器上有效。
我的网页代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EmailSignature_EXEC.aspx.cs" Inherits="_Default" %>
<html>
<head>
<title></title>
<script>
function loaded()
{
window.setTimeout(CloseMe, 500);
}
function CloseMe()
{
window.open('', '_self').close();
}
</script>
<script type="text/javascript">
</script>
</head>
<body onLoad="loaded()">
Hello!
\\\\cmbfs02\\Software\\web\\EmailSignature_WPF\\EmailSignature_WPF.exe
</body>
</html>
C#代码:
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load()
{
var applicationPath = "\\\\cmbfs02\\Software\\web\\EmailSignature_WPF\\EmailSignature_WPF.exe";
Process.Start(applicationPath);
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "Close", "window.close()", true);
}
}
当我在IIS 上浏览到我的页面时,我看到该页面在Timeout 之后出现并关闭,但应用程序没有运行。如果我将 EXE 路径复制到 Windows 资源管理器中,应用程序会运行,但它不会从方法中运行。任何帮助表示赞赏
【问题讨论】:
-
IIS 运行应用程序池的帐户是否有权访问和执行文件?
-
我刚刚更新了应用程序池,以便它以我自己(管理员)而不是我们的服务帐户运行,结果相同。我会收到任何指示失败的消息吗?我根本没有收到任何反馈,该方法甚至被击中,但同样,它在 Page_Load 上按预期在本地执行
-
当您说它“运行 exe”时 - 在哪里 它运行 exe?从名字(WPF)看,它听起来像是一个UI应用程序。 在网络服务器上运行(这是一项服务)将无法正常工作。您是否尝试在此处在客户端上调出一个 exe?
-
它运行一个存储在共享驱动器上的 EXE。 \\\\cmbfs02\\Software\\web\\EmailSignature_WPF\\EmailSignature_WPF.exe 此 exe 已单独开发和编译,如果按照我指定的路径从服务器“双击”,则该 EXE 可以工作。最终目标是让用户导航到运行此 EXE 的已发布网站。现在,为了进行测试,我从 IIS 服务器导航到该站点,但这不是真正的最终用例。这能回答你的问题吗?
-
@gruff 但是:此应用程序是否设计为服务器端无头工具,仅代表 Web 服务器进行一些处理?还是用户期望与之交互的客户端 UI?因为你所做的只会对其中的第一个起作用。请记住:运行
Process.Start的不是客户端桌面 - 它是您的网络服务器,更具体地说是IIS / 应用程序池服务帐户。它没有有可以显示 UI 的桌面。
标签: javascript c# asp.net pageload