Я работаю над 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>
Код С#:
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
путь EXE
в проводник Windows, приложение запустится, но это не из метода. Любая помощь оценивается
Похоже, вы пытаетесь запустить UI exe на клиенте, но то, что вы на самом деле делаете, выполняется на веб-сервере. Если это правильно, то в принципе то, что вы пытаетесь сделать, просто... не собирается работать. Игнорируя тот факт, что реализация должна быть совершенно другой, браузеры явно разработаны для того, чтобы не запускать произвольные исполняемые файлы с веб-серверов - плюс, конечно, это будет работать только на некоторых ОС - предположительно в этом случае окна.
Несколько лет назад я мог бы сказать "заглянуть в ClickOnce для этого", но я не знаю, поддерживается ли эта опция или рекомендуется.
Process.Start
- что происходит на сервере