0


首先,我没有足够的经验在 asp.net 中重写 Url。无论如何,由于互联网上的 SO 和其他有用的文章,我取消了 url 重写。但是这个新项目有一个特定的需求,我必须为不同的用户显示 Url:

用户名.域名.topdomain

此外,用户特定页面的每个操作都应该像这样工作,即用户 profile.aspx 页面,而不是:

domain.topdomain/用户名/profile.aspx

我们想要:

用户名.域名.topdomain/profile/

我怎么能把这个拉出来?
关于PS
请求可以有“N”个查询字符串,所以 web.config 中的任何内容都太复杂而无法处理。

4

2 回答 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
于 2013-05-16T08:46:51.550 回答
0

Asp.Net 中的 HttpContext 类不会帮助您解决这个问题。其上的重写器方法旨在覆盖路径和查询字符串,而不是主机名或端口。
我相信您将需要使用客户端重写来更改主机名:向客户端发送一些脚本以从不同的位置重新加载。

正如其他人所说,您需要设置一些通配符 DNS 以允许您的 username.domain.tld 主机名解析到您的 Web 服务器。

于 2013-05-16T09:12:18.380 回答