牛腩新闻发布系统中问题集锦

      最近一直在看牛腩老师的新闻发布系统.到现在感觉最大的就是非常地想总结。一是B/S中涉及到的html,css,asp.net,javascript,jquery,ajax等等,他们究竟是什么,我只是能通过这个系统有一个模糊的想法,他们之间的关系是怎么样的,还理不清。现在跟着做了一遍,但是很多该了解的东西还没有掌握。这是我接下来该做得事情---建立B/S的全局观。二是在做得过程中由于工具和语言的发展,很多的地方已经不一样了。边做边调bug。下面我总结了一下我做得过程中出现的bug,以及解决办法。

1.获取客户端IPv4地址

在视频牛腩老师采用这种方法取出客户端ip:Request.ServerVariables["REMOTE_ADDR"];在我这里测试出的结果是"::1".而不是想象的类似于"127.0.0.1"这样的格式的IP地址.这是因为我使用的window8的系统,默认取出的是IPv6的地址。我们可以将网络连接中 IPv6的协议勾掉(这点在网上找到的办法,没有测试过)。我采用的是另一种办法,将ipv6的地址转为ipv4的。这里还需要注意一点:代理服务器.

 ASP 中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。但是也不是每个代理服务器都能用此方法获得.如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的.可以这么处理:

...... 
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") 
...... 

我的解决办法(取出真正的IPv4地址):需要引用命名空间:System.Net

        public string GetClientIPv4()                    '获取客户端Ipv4地址。
        {
            string ipv4 = String.Empty;
            foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))    '调用下面的方法获取IP。
            {
                if (ip.AddressFamily.ToString() == "InterNetwork")
                {
                    ipv4 = ip.ToString();
                    break;
                }
            }

            if (ipv4 != String.Empty)
            {
                return ipv4;
            }

            foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
            {
                if (ip.AddressFamily.ToString() == "InterNetwork")
                {
                    ipv4 = ip.ToString();
                    break;
                }
            }
            return ipv4;
        }


        /// <summary>
        /// 取得客户端地址
        /// </summary>
        public string GetClientIP()
        {
            if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])   '使用代理服务器了吗?
            {
                return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];   '是,采用REMOTE_ADDR这种方法。
            }
            else
            {
                return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];   '不是,采用HTTP_X-FORWARDED_FOR这种方法。

            }
        }

2.将密码转换为MD5码

牛腩老师的视频中需要将密码加密为MD5码,他的方法为:

string Password = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text.ToString(), "MD5");
我的vs2012中出现此方法已过时的错误提示。下面是我的解决方案:需要引用命名空间: System.Web.Security;

       //将字符加密为MD5码
        public String md5(String s)
        {
            System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);
            bytes = md5.ComputeHash(bytes);
            md5.Clear();

            string ret = "";
            for (int i = 0; i < bytes.Length; i++)
            {
                ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');
            }
            return ret.PadLeft(32, '0');
        }

3.引用第三方控件FreeTextBox

在视频中引用了第三方控件FreeTextBox后,编译出现错误:错误"Lc.exe 已退出,代码 -1 ".

解决方案:

 1、就是把Properties文件下的license.licx给删除,重新编译。

 2、如果还出现这个问题的话,必须将你的破解版的哪个组件使用lidism给翻译成il语言,然后用ilasm重新编译成dll,在编译的时候加入 /key=[你的强名称文件].snk 参数,自己加入强名称签名,然后使用vs2005重新编译,就可以成功了。

4.添加asp.net 的验证控件时弹出的错误。如下:

([ASP.NET]WebForms UnobtrusiveValidationMode 需要 'jquery' 的ScriptResourceMapping。请加入 ScriptResourceMapping 命名的 jquery (区分大小写)。)

解决办法:在page_load事件中加入下面这句话:UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;   就可以了。(原因还不了解。)



Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计,皆可应用在项目、毕业设计、课程设计、期末/期/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值