在我的 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();
}
在上面的代码片段中,我检查租户是否存在,如果不存在,则重定向到新客户。
[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);
}
上面的代码创建了一个新客户,最后我的 //todo 就是这个问题的内容。如何以tenant.domain.com 的形式重定向到包含实际租户的URL?
我不知道这种“处理租户的方式”是否是一种不好的做法,如果是,请随意说。
问题:如何重定向到租户 URL ([tenantname.[mysite].com/Index/Home)。像: Redirect("tenantname", "Index", "Home") 会很棒,但当然不存在。我用谷歌搜索了一下,但没有遇到有用的链接(这主要是我认为我设计“错误的东西”的原因)。
建议会很棒!非常感谢您提前考虑!
如果我因为不清楚我的要求而需要重新措辞,请告诉我。