如何在子目录中运行ASP.NET Core 6.0应用程序?

问题描述 投票:0回答:1

我正在子目录

myapp
中运行 ASP.NET Core 6 应用程序。这曾经在 ASP.NET Core 5 MVC 版本中工作得很好,但现在当我有一个表单时,使用
Html.BeginForm()
,它会发布到根 url 而不是在
myapp
下。

我已经尝试过

app.UsePathBase("myapp")
,但这似乎毫无作用。并且足够方便地提供了如何处理大约每 3 年一次的变化的机制,祝您找到解决方案好运。

编辑:有趣的是,生成的 html 是

<form action="/myapp/MyController" method="post">
,所以看起来是正确的?

asp.net-core
1个回答
0
投票

好吧,我发现了问题,这是我自己的错,但由于 ASP.NET Core 中 HttpRequest.Path 返回的内容发生了变化,这有点出乎意料。在我的控制器 POST 方法中,我重定向到 GET 方法,将 POST 值转换为 url 参数。在这个重定向中,我使用了 HttpRequest.Path,就像我在 ASP.NET MVC 5 中所做的那样。但显然这曾经包含 PathBase,但在 ASP.NET Core 中不再包含!定义的改变真是令人不愉快,我花了一整天的时间才找到这个,因为我不太擅长解决 ASP 的问题。

我最终认为我需要记录 ASP 正在执行的操作,而打开日志记录则指出了错误的重定向。我将

"Microsoft.AspNetCore": "Warning"
中的
"Information"
级别更改为
appsettings.json
,并将
stdoutLogEnabled
中的
"true"
更改为
Web.config
以记录发生的情况。

所以最后我不需要调用

app.UsePathBase()
,因为它似乎已经自动处理了。

© www.soinside.com 2019 - 2024. All rights reserved.