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

时间:2013-12-06 21:28:16

标签: c# asp.net-mvc-4 httphandler

我有一个网络应用程序(所有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;
            }
        }

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

        var page = BuildManager.CreateInstanceFromVirtualPath(redirect, typeof(Page)) as IHttpHandler;

        return page;
我认为,

实际上是在URL中执行页面并返回HTML。但是,这里没有页面,它是我想要下载到客户端的大量文件的根文件夹。我尝试过做一个Server.Transfer,但是这样可行,但它改变了客户端URL。我在URL上使用客户端名称在应用程序中记录用户,因此这对我不起作用。我需要浏览器中的URL不要更改,但URL myURL / username返回myURL / Code / Full的内容。

由于

1 个答案:

答案 0 :(得分:0)

在您的控制器中尝试

return RedirectToLocal(url);

从HttpHandler你应该能够做到这样的事情:

HttpContext.Current.Response.Redirect(url)