我如何重定向某人从一个动作到另一个在ASP.当一个动作完成时.NET MVC
本文关键字:一个 ASP 完成时 MVC NET 另一个 重定向 某人 | 更新日期: 2023-09-27 17:53:36
在我的webapp(工作正在进行中),我现在尝试允许新客户注册到我的webapp。顺便说一句,我正在Azure中部署。
我正在研究的想法:
www。(mysite) .com/Register
这个注册页面允许"新"用户注册他的新租户。
客户。(mysite) .com/Register
代码
大致如下所示 public ActionResult Register()
{
var url = Request.ServerVariables["HTTP_HOST"];
var tenantNameParser = new TenantNameParser(url);
if (!TenantRepository.Exists(tenantNameParser.TenantName))
{
return RedirectToAction("NewCustomer");
}
return View();
}
在上面的代码片段中,我检查tenant是否存在,如果不存在,则重定向到新客户。
[HttpPost]
public ActionResult NewCustomer(Customer model)
{
if (ModelState.IsValid)
{
var tenant = new Tenant
{
Name = model.TenantName,
Guid = Guid.NewGuid().ToString()
};
TenantRepository.Add(tenant);
// TODO create a new user new tenant repository to do this stuff as 1 atomic action
if (!UserRepository.Exists(model.AccountableEmailAddress))
{
// Attempt to register the user
var createStatus = MembershipService.CreateUser(
model.AccountableUser,
model.Password,
model.AccountableEmailAddress);
if (createStatus == MembershipCreateStatus.Success)
{
FormsService.SignIn(model.AccountableUser, false);
return RedirectToAction("Index", "Home");
}
throw new Exception("crappy implemenation, improve");
}
FormsService.SignIn(model.AccountableUser, false);
// TODO figure out how to redirect to tenant.site.com
return RedirectToAction("Index", "Home");
}
return View(model);
}
上面的代码创建了一个新客户,最后my//todo就是这个问题的内容。如何重定向到包含以tenant.domain.com形式存在的实际租户的URL ?
我不知道这种"处理租户的方式"是否是一种不好的做法,如果是,请随意说出来。
问题:如何重定向到租户URL ([tenantname.[mysite].com/Index/Home)。喜欢的东西:重定向("tenantname","Index","Home")会很好,但当然不存在。我在谷歌上搜索了一下,但没有找到有用的链接(这就是为什么我认为我设计了"错误的东西"的主要原因)。
建议太棒了!事先感谢您的关照!
如果我因为不清楚我的要求而需要重新措辞,请告诉我。
这只是我的两分钱,如果有错,请指正。
我的理解是,您无法在代码中控制[tenant name].yoursite.com中的租户名称,因为它超出了ASP的范围。净MVC。它是域名yoursite.com的CNAME。下面是我的一些想法。
-
我猜你需要一个可编程的域提供商,这意味着你可以从你的代码创建CNAME。然后,当新客户注册时,实际的URL可能是yoursite.com/[租户名称]/。然后将其映射到新的CNAME[租户名称].yoursite.com。
-
我不确定URL重写可以帮助你。这意味着你创建一个新规则如果传入URL是[租户名]。yoursite.com,你将其映射到yoursite.com/[租户名]/
要做到这一点,您需要查看asp.net MVC的域路由。