Rewrite URL in asp c#

本文关键字:asp in URL Rewrite | 更新日期: 2023-09-27 18:01:15

如何在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"

分别我在网上搜索,发现静态页面或使用全局。

Rewrite URL in asp c#

在应用程序启动时Asax,但在用户登录后没有发现任何内容。

有几种方法可以做到这一点。Ub1k以一种方式陈述。

我认为最简单的方法是使用global.aspx.cs(如果你没有全球。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");
}

如果您希望基于客户端登录进行重定向-这是一个内部应用程序的事情(不能由IIS处理-与IIS Url重写器一样),那么您可能应该创建一个HttpModule

那么你应该做的是:

  • 创建实现IHttpModule的模块->类
  • 在这个模块中实现你的重定向逻辑
  • 插入,在web中。config section: <configuration><system.web><httpModules> like

    <add name="MyModule" type="MyModule.Module, MyModule" />

所有内容可在:http://support.microsoft.com/kb/307996

找到

请注意,您必须将您的逻辑挂钩到完成after认证完成的事件。我还认为,要读取用户信息,你应该让你的模块也实现IRequiresSessionState

    //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