C# MVC4->;重定向到文件夹的HttpHandler

C# MVC4->;重定向到文件夹的HttpHandler,c#,asp.net-mvc-4,httphandler,C#,Asp.net Mvc 4,Httphandler,我有一个web应用程序(全部为HTML/Jquery),我想通过URL MySite/SubscriberId将其分发给订阅者,而不需要无休止的代码副本。因此,我制作了一个HTTP处理程序,如下所示: var routeValues = requestContext.RouteData.Values; if (routeValues.ContainsKey("name")) { string name = routeVal

我有一个web应用程序(全部为HTML/Jquery),我想通过URL MySite/SubscriberId将其分发给订阅者,而不需要无休止的代码副本。因此,我制作了一个HTTP处理程序,如下所示:

        var routeValues = requestContext.RouteData.Values;

        if (routeValues.ContainsKey("name"))
        {
            string name = routeValues["name"].ToString();


            switch(GetUserType(name))
            {
                case UserType.Invalid:
                    break;
                case UserType.Developer:
                    redirect = Settings.BetaAppPath;
                    break;
                case UserType.Standard:
                    redirect = Settings.FullAppPath;
                    break;
                case UserType.Tester:
                    redirect = Settings.TesterAppPath;
                    break;
            }
        }
        var page = BuildManager.CreateInstanceFromVirtualPath(redirect, typeof(Page)) as IHttpHandler;

        return page;
这将返回像/Code/Full或/Code/Beta这样的字符串。这些文件夹存在并且是我的解决方案的一部分。在这一点上,我发现重定向的唯一方法是这样的:

        var routeValues = requestContext.RouteData.Values;

        if (routeValues.ContainsKey("name"))
        {
            string name = routeValues["name"].ToString();


            switch(GetUserType(name))
            {
                case UserType.Invalid:
                    break;
                case UserType.Developer:
                    redirect = Settings.BetaAppPath;
                    break;
                case UserType.Standard:
                    redirect = Settings.FullAppPath;
                    break;
                case UserType.Tester:
                    redirect = Settings.TesterAppPath;
                    break;
            }
        }
        var page = BuildManager.CreateInstanceFromVirtualPath(redirect, typeof(Page)) as IHttpHandler;

        return page;
我相信,它实际上执行URL中的页面并返回HTML。但是,这里没有页面,它是我想下载到客户端的大量文件的根文件夹。我试着做了一个Server.Transfer,但这是可行的,但是它改变了客户端的URL。我在应用程序中使用URL上的客户端名称登录用户,因此这对我不起作用。我需要浏览器中的URL不改变,但URL myURL/用户名返回myURL/代码/完整的内容


谢谢您的控制器,请尝试

return RedirectToLocal(url);
通过HttpHandler,您应该能够执行以下操作:

HttpContext.Current.Response.Redirect(url)

谢谢,但我不在控制器中,我在HTTPHandler中。我在考虑把我所有的用户名都注册为我的路由注册表中的URL,这就是你的建议,并且有一个控制器重定向到我实际的本地代码库?这会改变客户端看到的URL吗?那是我的止损。不,这几乎是我已经做过的。问题是,浏览器中的URL变为/Code/Full,我需要它不要更改。谢谢你的帮助,但我就是从这里开始的。我需要准确地执行此代码所做的操作,而不改变浏览器中的URL,并且我需要指向一个文件夹,而不是单个文件。您为什么不想创建控制器而不是HttpHandler?我的意思是做重定向,而不是网页本身。我正在重写一个现有的网站,格式是sitename/username。我必须为每个用户名注册一个默认页面的控制器,以保持使用现有格式(其中包含用户)。捕获URL的HTTPHandler(我们目前创建了URL,并且有无数的应用程序副本)似乎是我的逻辑路径,但是如果你有更好的想法,我洗耳恭听:-)我不能更改URL格式,这就是问题所在。