C# 在ASP.NET MVC中,当一个操作完成时,如何将某人从一个操作重定向到另一个操作?

C# 在ASP.NET MVC中,当一个操作完成时,如何将某人从一个操作重定向到另一个操作?,c#,asp.net,asp.net-mvc,azure,C#,Asp.net,Asp.net Mvc,Azure,在我的webapp(正在工作)中,我现在尝试允许新客户注册到我的webapp。我正在Azure btw中部署 我正在研究的想法是: www[mysite].com/Register 此注册页面允许“新”用户注册新租户 客户。[mysite].com/Register 这在代码中大致如下所示 public ActionResult Register() { var url = Request.ServerVariables["HTTP_HOST"];

在我的webapp(正在工作)中,我现在尝试允许新客户注册到我的webapp。我正在Azure btw中部署

我正在研究的想法是:

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)。类似于: 重定向(“租户名称”、“索引”、“主页”)会很好,但当然不存在。我用谷歌搜索了一下,但没有找到有用的链接(这主要是我认为我设计“错误的东西”的原因)

建议将是可怕的!Thx为您提前考虑了很多


如果因为不清楚我的要求而需要重新措辞,请让我知道。

要完成这一点,您需要查看ASP.NET MVC。

只要我的2美分,如果有错误,请纠正我

我的理解是,您无法在代码中控制[tenant name].yoursite.com中的租户名称,因为它不在ASP.NET MVC的范围内。它是域yoursite.com的CNAME。因此,我在下面给出了一些想法

  • 我想您需要一个可编程的域提供程序,这意味着您可以从代码中创建CNAME。然后,当新客户注册时,实际的URL可能是yoursite.com/[tenant name]/。然后将其映射到新的CNAME[tenant name]。yoursite.com

  • 我不确定URL重写是否有帮助。这意味着您创建了一个新规则,如果传入的URL是[tenant name].yoursite.com,则将其映射到yoursite.com/[tenant name]/


  • 您的第二个问题是适当的;如果您展示一些代码并扩展您所获得的内容。第一个问题不适用于堆栈溢出。同样,“建议”和“坏做法与好做法”不是关于堆栈溢出的问题类型。为了避免它被关闭,我建议编辑它,并将您的问题缩小到您面临的实际技术问题。啊,对不起,我没有意识到。恐怕我们都编辑了这篇文章(或者至少有人编辑了)。希望我没有撤销更改。我现在特别请求技术帮助,并祈祷有经验的人仍然会告诉我我是否正在做某件事。只有链接的答案不是首选的,因为如果链接消失,那么这个答案对未来的访问者来说就没用了。有趣的是,我四处浏览,最后发现了你已经发布的链接e、 这个icw cname就是解决方案。很抱歉,接受晚了,昨天看得不够仔细。@Haxx没问题,我很高兴你找到了你要找的东西。我想这让我找到了正确的方向。我今晚会研究这个问题,然后在这里报告。我今天会把问题留到今天,也许其他人可以给我指一些考试到目前为止,谢谢!