当前位置: 首页 > news >正文

.net 生成二级域名

将此站点默认访问文档设为Index.aspx,。

做好后,不管用什么样的二级前缀都会访问到这个网站。



下面来获取URL地址进行分析,下面是过程代码,用来获取及判断主机头,代码放在默认文档的首文件Index.aspx.cs中

        /// <summary>
        ///取得二级域主机头值,并实行转向
        /// </summary>
        public void CheckDomain()
        {
            HostName = HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址
            UserHost = HostName.Split(new Char[] { '.' });  //数组,以“.”分隔

            //判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页
            if (UserHost.Length > 3)
            {
                HttpContext.Current.Response.Redirect("http://www.域名.com/Error.aspx");        //跳转到出错页面
return;
            }

            UserDomainName = UserHost[0].ToString();    //取得数组最前面一组值,及二级域名主机头

            //进行特定判断,及是不要用到做为二级域名的主机头
            if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "域名" || UserDomainName == null || UserDomainName.ToString()=="")
            {
                //你的动作
            }
            else {
                HttpContext.Current.Response.Redirect("/User/");        //跳转到用户目录,即是二级域名所要去到的目录,当然你也可以跳传至*.aspx?UserID=xxx这样的链接
                                return;
            }

        }

到这里已经可以实现abc.域名.com跳转到指定的页面或链接了,但并不是真正的二级域名,只是URL转向而已。


方法二:真正的二级域名
a.        建立站点
此时我们需要建立两个站点,一个主站点、一个二级域站点,二个站点的文件目录为同一目录,其目录中有Default.aspx及Index.aspx两个文件。建立方法如下:
a). 主站点建立方法参照方法一中的站点建立,不过,主机头非空,需设为www.域名.com  与 域名.com ,当然,你也可以设置其它不想用来做二级域的主机头。站点默认访问文档为:Default.aspx。
b). 二级域站点建立方法与方法一中的站点建立一样,其默认访问文档为:Index.aspx。

b.        现在我们要用到之前建立的二级域站点,我们将用户的数据放在根目录下的User目录中。
下面是/User目录中默认文档(Index.aspx.cs)的过程代码,主要用途是将二级域名主机头存入Session,方便调用,也是二级域(用户区)的首页文件

        /// <summary>
        ///取得二级域主机头值,存入Session["UserDomainName"]中
        /// </summary>
        public void UserDomainNameSession()
        {
            HostName = HttpContext.Current.Request.Url.Host.ToString();        //获取URL主机地址
            UserHost = HostName.Split(new Char[] { '.' });        //数组,以“.”分隔

                        //判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页
            if (UserHost.Length > 3)
            {
                HttpContext.Current.Response.Redirect("http://www.域名.com//Error.aspx");        //跳转到出错页面
                                return;
            }

            UserDomainName = UserHost[0].ToString();        //取得数组最前面一组值,及二级域名主机头

                        //进行特定判断,及是不要用到做为二级域名的主机头
            if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "域名" || UserDomainName == null || UserDomainName.ToString()=="")
            {
                                //你的动作
            }
            else
            {
                HttpContext.Current.Session["UserDomainName"] = UserDomainName; //将二级域名主机头存入Session
            }
        }
        //你对Session["UserDomainName"]的处理,比如把这个Session["UserDomainName"]的值是“abc”,那么你可以index.aspx?UserName=abc,如果不想使用Session,你可以在需要用到二级域主机头时,再来通过URL地址获取。

c.        URL重写
我用的是微软的URLRewriter,使用方法参见:http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
web.config 中的重写方法是:
                        <!--User区主机头URL重写,实现当abc.域名.com访问站点时,经二级域站点,默认首文件为Index.aspx,将Index.aspx地址重写到/User/Index.aspx-->
                        <RewriterRule>
                                <LookFor>~/Index\.aspx</LookFor>
                                <SendTo>~/User/Index.aspx</SendTo>
                        </RewriterRule>

到这里已经实现二级域了,不管输入什么样的主机头(www.域名.com 与 域名.com除外,因为这两个域已经绑定到主站点中,优先访问到了主站点),就可以实现 abc.域名.com访问到这个用户目录了,而且浏览器地址栏,出现的也是abc.域名.com这样的域名地址,为了保证此二级域访问其它页面也保持二级域名的属性,也需同时做URL重写,在其它页面如需用到二级域主机头(用户名),从Session["UserDomainName"] 中取得即可,比如,要在User目录中的文件 test.aspx ,显示二级域主机头名称,同时需保持浏览器地址栏地址为: abc.域名.com/test.aspx ,那么在web.config中添加URL重写规则:
                        <RewriterRule>
                                <LookFor>~/test\.aspx</LookFor>
                                <SendTo>~/User/test.aspx</SendTo>
                        </RewriterRule>

然后,test.aspx自身通过获取Session["UserDomainName"]的值或通过URL或取,来显示二级域主机头名称。
当然,你也可以直接将二级域站点单独绑定到这个User用户目录,取得URL中的主机头(用户名),但这样可能失去了与主站数据通讯的方便性。

转载于:https://www.cnblogs.com/zyosingan/archive/2009/04/12/1434105.html

相关文章:

  • Hibernate JPA简介
  • 脚本:监控临时表空间使用率
  • WINDOWS命令和批处理
  • Jenkins忘记密码的修复方法(Windows/Linux)
  • 最全的神奇图片-全新的视觉享受(绝对经典)
  • 用C#快速往Excel写数据
  • 数组和集合的整理
  • 这些年,你还好吗?
  • IE8不能保存cookie,造成response.redirect死循环的原因
  • JBPM工作流开发中JbpmContext与hibernate或ibatis中的DAO混合使用问题
  • 查找组成一个偶数最接近的两个素数
  • Gotta Be Somebody - Nickelback
  • (转) Face-Resources
  • :O)修改linux硬件时间
  • C++11多线程std::thread的简单使用
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • java2019面试题北京
  • Laravel核心解读--Facades
  • log4j2输出到kafka
  • React的组件模式
  • v-if和v-for连用出现的问题
  • Vue实战(四)登录/注册页的实现
  • 测试开发系类之接口自动化测试
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 力扣(LeetCode)22
  • 三栏布局总结
  • 实习面试笔记
  • 使用SAX解析XML
  • ​queue --- 一个同步的队列类​
  • (2)Java 简介
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zhuan) 一些RL的文献(及笔记)
  • (超详细)语音信号处理之特征提取
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (学习日记)2024.01.09
  • (译) 函数式 JS #1:简介
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)EOS中账户、钱包和密钥的关系
  • (转)LINQ之路
  • (转)创业家杂志:UCWEB天使第一步
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core 成都线下面基会拉开序幕
  • .NET 中什么样的类是可使用 await 异步等待的?
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符