如何根据c#.net或asp.net 4.0中的注册客户端重定向url。例如,如果客户注册为“client1”,我们的网站为www.mycompany.com,则每个页面客户收益都应该获得www.client1.mycompany.com。
更详细的例子:
例如,另一个创建的客户端是Client2。我一般创建的页面就像
"www.mycompany.com/product.aspx"
"www.mycompany.com/categories.aspx" should be shown as
"www.client2.mycompany.com/product.aspx" and
"www.client2.mycompany.com/categories.aspx"
分别 我在网上搜索并找到静态页面或在启动应用程序时使用Gloabal.asax但在用户登录后没有找到任何东西。
答案 0 :(得分:2)
有几种方法可以做到这一点。 ub1k在某种程度上说明了。
我认为最简单的方法是使用global.aspx.cs (如果你没有global.aspx然后添加它)然后
protected void Application_BeginRequest(object sender, EventArgs e)
{
var currentPath = Request.Path.ToLower(); //get the request
var myContext = HttpContext.Current;
if (currentPath == "/addUser" || currentPath == "/newuser") //decide what to do with the request
myContext.RewritePath("/login.ashx?path="+ currentPath);
else //default value
myContext.RewritePath("/default.aspx");
}
简单,清晰,非常强大......
答案 1 :(得分:1)
如果您希望根据客户端登录进行重定向 - 这是一个内部应用程序(无法由IIS处理 - 与IIS Url重写器一样),那么您应该创建一个HttpModule
。
所以你应该做的是:
IHttpModule
将其插入,在web.config中插入:<configuration><system.web><httpModules>
,如:
<add name="MyModule" type="MyModule.Module, MyModule" />
所有可以在http://support.microsoft.com/kb/307996
找到请注意,您需要将逻辑挂钩到已完成身份验证的事件after
。
我还认为,要阅读用户信息,您还应该使用模块实现IRequiresSessionState
答案 2 :(得分:-1)
//DLL: Intelligencia.UrlRewriter.dll
//web.config
<configuration>
<configSections>
<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
</configSections>
</configuration>
<system.web>
<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
</httpModules>
</system.web>
<rewriter>
<rewrite url="~/(.+)/CompanyHomePage" to="~/Home.aspx"/>
</rewriter>
//C#:
string strTitle = Session["company_name"].ToString();
strTitle = strTitle.Trim('-');
strTitle = strTitle.ToLower();
char[] chars = @"$%#@!*?;:~`+=()[]{}|\'<>,/^&"".".ToCharArray();
strTitle = strTitle.Replace("c#", "C-Sharp");
strTitle = strTitle.Replace("vb.net", "VB-Net");
strTitle = strTitle.Replace("asp.net", "Asp-Net");
strTitle = strTitle.Replace(".", "-");
for (int i = 0; i < chars.Length; i++)
{
string strChar = chars.GetValue(i).ToString();
if (strTitle.Contains(strChar))
{
strTitle = strTitle.Replace(strChar, string.Empty);
}
}
strTitle = strTitle.Replace(" ", "-");
strTitle = strTitle.Replace("--", "-");
strTitle = strTitle.Replace("---", "-");
strTitle = strTitle.Replace("----", "-");
strTitle = strTitle.Replace("-----", "-");
strTitle = strTitle.Replace("----", "-");
strTitle = strTitle.Replace("---", "-");
strTitle = strTitle.Replace("--", "-");
strTitle = strTitle.Trim();
strTitle = strTitle.Trim('-');
Response.Redirect("~/" + strTitle + "/CompanyHomePage", false);//Redirect to ~/Home.aspx page
//reference: CompanyHomePage same in web.config <rewrite url="~/(.+)/CompanyHomePage" to="~/Home.aspx"/> which company is log in to sight that company name show in url like this http://abcd//CompanyHomePage