c# - ASP.NET Core 将子域映射到区域

标签 c# asp.net-core

我正在尝试将子域映射到区域,到目前为止,我找到的所有答案都是针对以前版本的 .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/

相关文章:

C# 在缓存中存储值类型

asp.net-core - .Net 核心 Ping 类 - System.Net.Ping 或 System.Net.Utilities

asp.net-core - ASP.Net 核心 Web API Controller - 200 状态代码但没有响应

c# - 如何为amchart饼图的切片着色?

c# - 带有计时器的 Xamarin Android UI 没有对更改使用react

c# - UWP_无法使用 StartupTask 类启动应用程序?

c# - 将div id存储为字符串发送到javascript,然后在回发后抓取

asp.net-core - _context.SaveChanges() 有效但等待 _context.SaveChangesAsync() 无效

sql-server - ASP.NET 核心标识 - 默认情况下,为什么数据库主键定义为 "nvarchar"而不是 "UniqueIdentifier"?

c# - ASP.NET 5 Web API 项目模板不允许使用 Entity Framework