Как правильно запустить исполняемый файл на удаленном сервере с помощью веб-приложения ASP.NET MVC? - PullRequest
0 голосов
/ 20 декабря 2018

Я новичок в C #, ASP.NET MVC и программировании в целом.Во время стажировки получил задание написать веб-приложение, которое позволит людям запускать сценарии с расширением .exe / .lnk на удаленном сервере и получать уведомления о завершении.

Я провел исследование, но на данный момент полностьюзастрял со следующей проблемой.Само задание создает много технических вопросов, но я постараюсь сузить его до двух:

Кнопка не запускает контроллер.Для создания таблицы используется https://datatables.net/. Браузер не выдает никаких проблем при рендеринге.Кроме того, этот код вырезан из фактической таблицы:

    $(document).ready(function () {
        dataTable = $("#interfaceTable").DataTable({
            "ajax": {
                "url": "/Interface/GetData",
                "type": "GET",
                "datatype": "json"
            },
            "columns": [
                {
                    "render": function () {
                        return "<a class='btn btn-outline-dark btn-sm' onclick= location.href = '@Url.Action("InterfaceRuntime", "Interface")'><i class='fas fa-play-circle'></i> Run</a>";
                    },
            ],
        });
    });

Если я пытаюсь получить доступ к контроллеру, напрямую передавая URL (Localhost: ~ / Interface / interfaceruntime), то браузер выдает исключение:

        [HttpGet]
        public ActionResult InterfaceRuntime()
        {

            ProcessStartInfo Info = new ProcessStartInfo()
            {

                FileName = @"C:\Users\Some.User\Hardcode\Path\to\a\file.exe",
                UseShellExecute = false,
                CreateNoWindow = true,
                LoadUserProfile = true,

            };

            Process InterfaceProcess = new Process();

            try
            {
                InterfaceProcess.StartInfo = Info;
                InterfaceProcess.Start();
                InterfaceProcess.WaitForExit();
                return Json(new { success = true, message = "Executed successfully"}, JsonRequestBehavior.AllowGet);
            }

            catch (Exception e)

            {
                return Json(new { success = false, message = e });
            }

        }

Само исключение:

[InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.]

Кажется, что веб-запрос заблокирован где-то еще и не имеет ничего общего с запросом Json.Был бы признателен за любую помощь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...