【问题标题】:Routing error 404 only when deployed in UAT web server. Works locally. ASP.NET Core仅在 UAT Web 服务器中部署时出现路由错误 404。在当地工作。 ASP.NET 核心
【发布时间】:2020-02-20 23:14:15
【问题描述】:

我已经在本地完成了我的 ASP.NET Core 应用程序的测试,它运行良好。但是,在发布到我们的 UAT 服务器后,我的视图上的触发器出现 404 错误,我无法确定原因。我可能会遗漏一些明显的东西,并且会欣赏新鲜的眼睛。谢谢你。

我尝试在 StartUp 中修改路由并尝试在我的控制器中混合路由。

startup.cs中Configure方法的相关部分:

        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 错误然后在前台返回。

【问题讨论】:

    标签: c# asp.net-core model-view-controller devexpress


    【解决方案1】:

    至少在 C# 方面,我可以告诉你这不是编程问题。作为一般规则,网络代码不关心另一端是否在同一台计算机、同一交换机或 Voyager 2 探测器上。

    确定存在网络问题的路径,而不是编程问题。正如您的标题所说,错误是 404/路由错误。所以它肯定在网络中的某个地方。可能服务器未设置为允许外部(非本地主机)连接或某些类似的安全功能。出于安全原因,许多默认配置文件都是使用此类设置创建的。它也可能是一个过于激进的防火墙。

    如有疑问,您可以使用一个简单的 HTML 文件进行验证,该文件应以存储在磁盘上的形式交付。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-18
      • 2019-10-20
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2015-05-27
      • 2015-03-31
      相关资源
      最近更新 更多