问题描述
我已将 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 错误。
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");
同样,到目前为止,这是有效的,但这是正确的方法,还是我误解了 Asp.Net Core 路由的路由概念和/或在这种情况下如何处理重定向?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)