我有一个网络应用程序(所有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的内容。
由于
答案 0 :(得分:0)
在您的控制器中尝试
return RedirectToLocal(url);
从HttpHandler你应该能够做到这样的事情:
HttpContext.Current.Response.Redirect(url)