怎样用.net+c#实现动态创建二级域名,比如当用户注册成功后就会给他一个网址http://name.site.com,博客网站上都有这种功能,请高手指点,最好给个实例!!

解决方案 »

  1.   

    我是想能否用程序实现,好多blog网站中应该不是还要与DNS服务商联系吧。是否可以用类似地址重写的方法动态实现?
      

  2.   

    asp的代码我有一个,但没实验过
    要的话留个邮箱发给你
    自己慢慢研究吧
      

  3.   

    DNS  泛解析到你服务器上就可以了!
      

  4.   

    DNS  泛解析到你服务器上就可以了!
      

  5.   

    泛二级域名解析就可以啦。不用同DNS 服务商联系,自己在dns控制面板设置,或者同空间服务商联系。
      

  6.   

    要想让用户访问你的站点,二级域名必须能够解析到你的IP地址,这个要同DNS服务商联系,难道你要求所有的客户端修改hosts?
      

  7.   

    有没有具体的实例参考一下,多谢!!我的e-mail:[email protected]
      

  8.   

    域名需要对dns服务器进行配置,服务器好像没有接口把http://do-net.xicp.net
    .NET技术群
    QQ群4329478,7019839,10058555
    ---------------------------------------------------------
    个人QQ303864496
    msn:[email protected]
    成都理工大三,寻成都地区兼职,熟悉asp.net/C#/webservice
    NeT(Nebula Team)结交愿意郑州发展的.net技术朋友(19-25岁)...
    email:[email protected]
      

  9.   

    第一步:把域名设置成泛解析. 
     就是把*.域名 解析到你的主机,是否支持泛解析,请查看你的域名商说明.
    第二步:IIS设成的时候不要绑定域名.注意一台服务器里只能有一个站点不绑定域名
    就是*.域名的默认访问页.
    第三步:默认页里加入以下代码:关键部分如下:
    string sURL=context.Request.ServerVariables["HTTP_HOST"].ToLower();
     sURL就是获取的域名部分 .
      xxx.域名
      对应的xxx就是用户名.然后查库里的记录,如xxx对应的是www.csd.net那就就把
    它转向到www.csdn.net 或者写一个框架页隐藏直实域名    第三步也可以写成HttpHandler或者HttpModule模块来处理
     HttpHandler模块:
    public class DnsHttpHandler: IHttpHandler 
    {
    public void ProcessRequest (HttpContext context) 
    {
                string sUSER;
                UserDns user;
    string userDomain=string.Empty;
    string sURL=context.Request.ServerVariables["HTTP_HOST"].ToLower();
    if(sURL.IndexOf("@")==-1&&sURL.IndexOf(".")==-1)
    {
    //判段域名,转向默认网址
    context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL,true);
    } #region myhome设置
    if(sURL=="保留域名")
    {
    context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL,true);
    }
    #endregion
    #region 判段并获取用户名
    sUSER=Utility.DomainToUser(sURL);
    userDomain=Utility.GetFirstDomain(sURL);
    //context.Response.Write(userDomain);
    //context.Response.End();
    user  =Users.GetUserDns(sUSER,userDomain);

    if(user==null)
    {
    context.Response.Redirect(DnsConfiguration.GetConfig().DefaultURL,true);
    }
               
             context.Response.Write( "<meta http-equiv=refresh content=\"0;url="+user.RedirectURL.Trim()+"\">"); 
    #endregion } public bool IsReusable 
    {
    get 
    {
    return false;
    }
    }
    } 提取用户名模块:
    public class Utility
    {
    public static string DomainToUser(string domain)

    string username=string.Empty;
    string[] first_name;
    #region 判段并获取用户名 if(domain.IndexOf("@")==-1&&domain.IndexOf(".")==-1)
    {
     return username;
    }
    if(domain.IndexOf(".")!=-1)
    {
    first_name=domain.Split('.');
    if(first_name[0]=="www")
    {
    username=first_name[1];
    }
    else
    {
    username=first_name[0];
    }
    }
    if(domain.IndexOf("@")!=-1)
    {
    first_name=domain.Split('@');
    if(first_name[0]=="www")
    {
    username=first_name[1];
    }
    else
    {
    username=first_name[0];
    }
    }
    #endregion

     return username;
    } public static string GetFirstDomain(string domain)
    {
     string[] first_name;
    domain=domain.Replace('@','.');
    string temp=string.Empty;
    if(domain.StartsWith("www."))
    {
    domain=domain.Replace("www.","");
    }
    if(domain.IndexOf('.')!=-1)
    {
    first_name=domain.Split('.');
    }else
    return string.Empty;
    if(first_name.Length==2)
    {
    //sb.Append("{0}.{1}",first_name[0])
    return String.Format("{0}.{1}",first_name[0],first_name[1]);
    }
    for(int i=1; i<first_name.Length;i++)
    {
    temp += first_name[i] + ".";
    }
                temp=temp.Remove(temp.Length-1,1);
            return temp;
              
       
    }
    }
      

  10.   

    首先DNS泛解析到你的服务器的IP上这样以后输入*.abc.com都可以进入abc网站
    接下来是在自己机器上做泛域名解析,这个可以用程序实现,或者用URL重写也可以
      

  11.   

    多谢各位大虾的回复、讨论,尤其是windinwing的恢复。但是我看了后还是一头雾水,不知道怎么下手,有没有一个完整点的实例参考一下。多谢!!!