Ошибка маршрутизации 404 только при развертывании на веб-сервере UAT. Работает локально. ASP.NET Core - PullRequest
0 голосов
/ 24 октября 2019

Solution Explorer

Я завершил локальное тестирование своего приложения ASP.NET Core, и оно отлично работает. Однако я получаю 404 ошибки для триггера на моем представлении после публикации на нашем сервере UAT, и я не могу определить, почему. Я, возможно, упускаю что-то очевидное и буду признателен за свежие глаза. Спасибо.

Я попытался изменить маршрутизацию в StartUp и попытался смешанной маршрутизации в моем контроллере.

Соответствующая часть метода Configure в файле startup.cs:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=StartPage}/{id?}");
        });

Соответствующая форма в моем представлении StartPage:

    <form action="@Url.Action("StartSlsProcess", "Home")"  method="post" enctype="multipart/form-data" id="trigger">
        <div id="process-trigger">
            @(Html.DevExtreme().Button()
                  .Text("Start SLS")
                  .Type(ButtonType.Success)
                  .UseSubmitBehavior(true)
                  )

        </div>
    </form>

Метод в HomeController:

    [HttpPost]
    public ActionResult StartSlsProcess()
    {

        var empty = new string[0];

        ConsoleApp.Program.StartProcessFromUI(empty);

        return new EmptyResult();

    }

Я ожидаю, что при нажатии кнопки в представлении запускается метод StartProcessFromUI в моем консольном приложении, продолжается отдельный процесс и обновляется представление, как и локально.

Редактировать: что такоеЕще более запутанная проблема заключается в том, что мое другое действие работает нормально и настроено так же:

        <form action="@Url.Action("Upload", "Home")" method="post" enctype="multipart/form-data" id="uploader">
        <div id="fileuploader-container">
            @(Html.DevExtreme().FileUploader().Name("file")
                  .ID("file-uploader")
                  .Accept("*")
                  .UploadMode(FileUploadMode.Instantly)
                  .UploadUrl(Url.Action("Upload", "Home"))
                  //.OnUploadError("fileUploader_onUploadError")

                  //.OnValueChanged("fileUploader_valueChanged")
                  )  
        </div>
    </form>

Метод HomeController:

[HttpPost]
    public ActionResult Upload()
    {
        try
        {
            var file = Request.Form.Files["file"];
            var path = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");

            if (!Directory.Exists(path))
                Directory.CreateDirectory(path);

            using(var fileStream = System.IO.File.Create(Path.Combine(path, file.FileName))) {
                file.CopyTo(fileStream);
                fileStream.Flush();
            }

            MoveFileFromServer(path, file); 

        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }

        return new EmptyResult();

    }

Кроме того, метод на моем ConsoleApp, собственно StartProcessFromUIполучает удар, просто ошибка 404 возвращается на переднем плане.

1 Ответ

1 голос
/ 24 октября 2019

По крайней мере, для C # я могу сказать, что это не проблема программирования. Как правило, сетевой код не имеет значения, находится ли другой конец на том же компьютере, на том же коммутаторе или на датчике Voyager 2.

Убедитесь, что существует путь, по которому возникает проблема с сетью, а непрограммирование одноКак говорится в вашем заголовке, ошибка 404 / Routing. Так что это определенно где-то в сети. Возможно, Сервер не настроен для разрешения внешних (не локальных) подключений или какой-либо подобной функции безопасности. Многие профили по умолчанию создаются с такими настройками в целях безопасности. Это также может быть чрезмерно агрессивный брандмауэр.

Если вы сомневаетесь, вы можете просто проверить его с помощью простого HTML-файла, который должен быть доставлен в том виде, в котором он хранится на диске.

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