asp.net-mvc - Asp.Net Core MVC 和重定向和路由
问题描述
我已将 Asp.NET Core 应用程序作为“子应用程序”发布到已建立的 IIS 网站,但我遇到了一个问题,我不确定我现在解决的方法是否正确. 该应用程序位于以下 URL,或者无论如何都应该:
http://localhost/MyTestNetCoreApp
我发现的第一件事是在任何地方,它使用了以下代码行(例如在自定义中间件中):
context.Response.Redirect("/item_path_here")
重定向将其发送回 IIS 系统的“根”,而不是 IIS 中应用程序子目录的实际路径。有问题的页面有一个带有“/item_path_here”路由集的@page 指令。因此,我希望在重定向发生后结束的地方是:
http://localhost/MyTestNetCoreApp/item_path_here
相反,我在这里结束:
http://localhost/item_path_here
其中“MyTestNetCoreApp”子目录已从 URL 中消失,最终出现 404 错误。
我尝试将以下内容添加到“Startup.cs”:
app.UsePathBase(new PathString(Configuration["AppSettings:ApplicationPathBase"]));
app.Use((context, next) =>
{
context.Request.PathBase = Configuration["AppSettings:ApplicationPathBase"];
return next();
});
这样,无论应用程序作为已建立的 IIS 网站的“子应用程序”在何处发布,只要在“appSettings.json”文件中正确设置了“AppSettings:ApplicationPathBase”,该应用程序就应该直接运行。不幸的是,在我执行下面的下一步之前,这个“单独”并没有解决这个问题。
我能够解决这个问题的唯一方法是将“PathBase”附加到请求的路由的前面,如下所示:
context.Response.Redirect(context.Request.PathBase + "/Index");
除了前面提到的“Startup.cs”文件的修改。
同样,到目前为止这是有效的,但它是正确的方法,还是我误解了 Asp.Net Core 路由的路由概念和/或在这种情况下如何处理重定向?
解决方案
推荐阅读
- javascript - json lottie 的编辑器颜色
- google-apps-script - 在谷歌应用脚本上测量我当前的使用消耗
- sql-server - SQL Server 连接读取超时
- swiftui - SwiftUI:使用计时器更新模型并将其反映在 UI 中
- python - Pygame 窗口仅在“无响应”时响应
- arrays - 如何从 iOS Swift 中的 json 获取价值?
- python - 计算 Pandas 列中值的 3 个月滚动计数
- apache - 访问 URL 的用户会两次附加上下文路径
- java - 需要帮忙。此代码删除除索引 0 以外的所有内容
- neo4j - 遍历对象列表并通过对象 Neo4j 的属性创建节点