routing - .net核心路由到基于当前域名的剃须刀页面区域?
问题描述
我目前正在尝试构建一个应用程序以从单个 .net 核心应用程序托管多个网站。
理想情况下,我想根据访问应用程序的域名显示完全不同的 Razor 页面。
理想情况下,我希望将我的剃须刀页面分解为多个区域,每个区域与不同的域名相关联。IE www.domain1.com 是 domain1 区域,www.domain2.com 是 domain2 区域,每个区域都有自己的页面索引等。
因此,如果有人从 www.domain1.com/aboutus 访问该应用程序,它会将他们定向到位于我的应用程序的 Area/Domain1/Pages/AboutUs 部分的剃须刀页面。
同样,如果我的应用程序收到对 www.domain2.com/aboutus 的请求,他们会看到位于 Area/Domain2/Pages/Aboutus 下的关于我们页面。
我一直在寻找几个小时,我无法弄清楚你是如何使用剃须刀页面区域功能来实现的。我能找到的唯一信息是如何使用带有 vanilla MVC 的区域来实现这一点。
这是一个很好的例子。
我不知道如何使用剃须刀页面完成相同类型的事情。
解决方案
我不确定使用区域的可扩展性如何,但是您可以使用中间件来识别域并基于该区域提供来自区域的内容,例如,其中“bloggs”是bloggs.com
域的区域名称:
public class AreaRoutingMiddleware
{
private readonly RequestDelegate _next;
public AreaRoutingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if(context.Request.Host.ToString() == "bloggs.com")
{
context.Request.Path = "/bloggs" + context.Request.Path;
}
await _next.Invoke(context);
}
}
您可能还需要添加对文件类型的检查,除非所有文件(css、js、favicon 等)也位于相应的区域中。
推荐阅读
- php - Laravel - 从 GlobalScope 应用功能内的缓存文件中读取数据
- c# - 异步方法在调用或等待时会抛出异常吗?
- python - Python / PyCharm 缺少参数'self'?
- javascript - 启迪服务器与神社集成“处理大型上传文件大小> 1 gb”
- javascript - 如何启用使用鼠标粘贴内容的按钮?
- xml - 将 XML 节点一分为二(XSLT 转换)
- javascript - 文本框到值进入整数
- angular - 如何在 LineChart.js 中动态使用数据
- javascript - 拒绝应用来自“http://localhost:8081/src/assets/materialIcons.css”的样式,因为它的 MIME
- xero-api - 通过 Xero API 验证税号