我正在尝试将子域映射到区域,到目前为止,我找到的所有答案都是针对以前版本的 .NET 而不是 .NET 核心。我找到的最好和最相关的答案来自 This page .但是我在实现它时遇到了问题,因为它似乎是 .NET 核心版本的演练,我得到了 'MvcRouteHandler' does not contain a constructor that takes 0 arguments
错误。
这是我从中得到错误的代码:
public class AreaRouter : MvcRouteHandler, IRouter //the error happens in this line, visual studio underlines the AreaRoute word
{
public new async Task RouteAsync(RouteContext context)
{
string url = context.HttpContext.Request.Headers["HOST"];
string firstDomain = url.Split('.')[0];
string subDomain = char.ToUpper(firstDomain[0]) + firstDomain.Substring(1);
string area = subDomain;
context.RouteData.Values.Add("area", subDomain);
await base.RouteAsync(context);
}
}
所以无论如何,我正在寻找另一种方法来将子域映射到区域或找到修复此错误的方法。
最佳答案
编辑:提供完整教程 here .
成功创建了文件的工作版本。
1.路由器代码可用here .在文件顶部的 _allowedSubdomains
数组中指定您自己的子域。
2.添加路由器后,在Startup.cs中修改你的代码:
app.UseMvc(routes =>
{
routes.DefaultHandler = areaRouter;
areaRouter 应该按照@mepsi 的描述传递。
3. 最后,按照描述允许使用 sudomains here .
现在一切都应该正常工作了。完整代码可在 Github 上获得.稍后我将编写包含所有解释的完整教程。
关于c# - ASP.NET Core 将子域映射到区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42287716/