牛腩购物33:发布网站,将网站上传到外网,讲数据库发布到远程服务器,如何在服务器上开数据库,更换电脑后微软企业库报错,网站异常后发送错误信息到指定邮箱,设置错误页

当我们在一台电脑上编写代码,然后我们更换到另外一台,如果是有使用微软企业库,是会报错的,需要导入微软企业库的5个dll,可以放在bin文件夹里面,记得要在DAL层上对 dll 进行引用

 

在 E:\Program Files (x86)\EntLib50Src\bin  文件夹里面

1:Microsoft.Practices.ServiceLocation.dll

2:Microsoft.Practices.EnterpriseLibrary.Data.dll

3:Microsoft.Practices.EnterpriseLibrary.Common.dll

4:Microsoft.Practices.Unity.dll

5:Microsoft.Practices.Unity.Interception.dll

 

这样才能完全使用微软企业库。

 

知识点二:网站异常后发送错误信息到指定邮箱

如果我们在使用网站的时候,网站报错,如何获取这些信息呢? 牛叉一点的,可以使用 Log4net  来获取日志,这里我们使用 Application_Error事件


protected void Application_Error(object sender, EventArgs e)
        {
            //在出现未处理的错误时运行的代码
            Exception objErr = Server.GetLastError().GetBaseException();
            string time = DateTime.Now.ToString();
            string error = "";
            error += "<strong>异常信息: </strong>" + objErr.Message + "<br>";
            error += "<strong>异常发生时间:</strong>" + time + "<br>";
            error += "<strong>IP: </strong>" + Request.UserHostAddress + "<br>";
            error += "<strong>发生异常页: </strong>" + Request.Url.ToString() + "<br>";
            string url_re = "";
            if (Request.UrlReferrer != null)
            {
                url_re = Request.UrlReferrer.ToString();
            }
            error += "<strong>上次请求的URL: </strong>" + url_re + "<br>";
            error += "<strong>堆栈跟踪: </strong><br>" + objErr.StackTrace.Replace("\r\n", "<br>") + "<br>";


            if (!objErr.Message.Contains("不存在"))
            {
                Utility.email.SendMail("网站有点小问题,请查看" + time, error, "17270@qq.com", "9102@qq.com", "9102@qq.com", "密码", "smtp.qq.com");
            }
        }

 

发送邮件的代码

/// <summary>邮件发送类
    /// 
    /// </summary>
    public class email
    {
         //using System.Net.Mail;
         // using System.Net;

        /// <summary>发送email,默认是25端口.用法:SendMail("邮件标题", "你的密码是:" , 收件人地址, 
"发信人完整邮箱地址", "发信人完整邮箱地址", "密码", "smtp.qq.com(QQ的smtp地址,不同的域名邮箱地址不通)")
        /// 
        /// </summary>
        /// <param name="title">邮件标题</param>
        /// <param name="body">邮件内容</param>
        /// <param name="toAdress">收件人</param>
        /// <param name="fromAdress">发件人</param>
        /// <param name="userName">发件用户名</param>
        /// <param name="userPwd">发件密码</param>
        /// <param name="smtpHost">smtp地址</param>
        public static void SendMail(string title, string body, string toAdress, string fromAdress,
                              string userName, string userPwd, string smtpHost)
        {
            try
            {
                MailAddress to = new MailAddress(toAdress);
                MailAddress from = new MailAddress(fromAdress);
                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(from, to);
                message.IsBodyHtml = true; // 如果不加上这句那发送的邮件内容中有HTML会原样输出 
                message.Subject = title; message.Body = body;
                SmtpClient smtp = new SmtpClient();
                smtp.UseDefaultCredentials = true;
                smtp.Port = 25;
                smtp.Credentials = new NetworkCredential(userName, userPwd);
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Host = smtpHost;
                //message.To.Add(toAdress);  //用 To.Add方法能增加收件箱的号码
                smtp.Send(message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }

 

知识点三:设置网站错误页,当网站报错的时候,页面跳转到错误页 

<!--设置错误页-->
      <customErrors mode="On" defaultRedirect="~/error.aspx"></customErrors>
 
image 
 

知识点四:如果我们的项目是用 asp.net 4.0制作的,但是空间是 asp.net 3.5,这个时候如何对项目进行转换呢?
需要对你项目里面的各个层,进行一个转换成 .net 3.5
image image 
我们重新选择为 3.5 即可
image 
image image 
image 
如果是asp.net 4.0转成 .net 3.5之后,还需要去 web.config里面,删除 httpRuntime requestValidationMode=”2.0” 这一行
image  
 
知识点四:如何发布网站?  我们选中web层,右键  发布,这样其他的DAL层,Model层和Utility层的cs代码会变成bin文件夹里面的dll文件。web层的cs文件也会变成dll
如果是vs2010,的发布是这样的
image 
image
image  
image 
然后开始上传
image 
如果是vs2011,是这样的(vs2011的中文版到了这一步,居然是英文的,坑爹··)
 
image 
image 
image 
 
记得是选择 release  而不是 debug。因为  release 是对网页里面的程序进行了优化了的
 
image 
今天发布的时候,总是报一个编辑器的错误,如图,提示一个图片,拷贝的时候,没找到,我进了文件夹,发现里面是空的,根本就没有,但是为什么会报错呢?
image 
于是我在vs里面打开web层的文件夹,发现还真的有一张图片,估计是以前做测试的时候有存在,但是可能是当时直接去文件夹删除了,而没有在vs里面删除
image   选中,手动删除,再次发布,成功。image 
 
我们去文件看看,选中文件,并上传到 服务器上。
image 
 
 
posted @ 2012-05-09 15:59  asp_net老友记  阅读(375)  评论(0编辑  收藏  举报