private void UpdateFriendLinkLvItem(object sender, WatchTimerEventArgs arg) { string sUrl = arg.Url; Entity.FriendLink model = BLL.FriendLink.Instance.GetEntity(new Guid(arg.Id)); try { string[] sNoCheckUrls = model.GetNoCheckUrls(); List <FriendLinkModel> urls = BLL.FriendLink.Instance.GetFriendLinks(sUrl); List <string> urltemp = new List <string>(); foreach (var url2 in model.Reports) { urltemp.Add(url2.PUrl); } foreach (var s in urls) { if (!urltemp.Contains(s.LinkUrl)) { FriendLinkReport rp = new FriendLinkReport(); rp.PUrl = s.LinkUrl; rp.IsOK = true; rp.IsNewAdd = true; rp.Info = "等待检测"; rp.LinkToText = s.LinkText; if (!Equals(sNoCheckUrls, null) && sNoCheckUrls.Contains(rp.PUrl)) { rp.Info = "忽略站点不做检测"; rp.IsNoToCheckUrl = true; } model.Reports.Add(rp); } } BLL.FriendLink.Instance.UpdateOne(model); CheckFriedLink(model); } catch (Exception e) { if (!Equals(model, null)) { model.IsHaveBad = true; BLL.FriendLink.Instance.UpdateOne(model); } else { XS.Core.Log.ErrorLog.InfoFormat("更新{0}出错,model为null,具体原因:{1}", sUrl, e.Message); } } //重新绑定数据 BindWebLink(); }
private void CheckFriedLink(Entity.FriendLink model) { model.IsHaveBad = false; List <FriendLinkReport> urls = model.Reports; foreach (var url in urls) { if (!url.IsNoToCheckUrl) { try { string sSEO = XS.Core.WebUtils.GetHtml(string.Format("http://www.aizhan.com/cha/{0}", url.PUrl.Replace("http://", "").Replace("https://", ""))); int iBr = XS.Core.XsUtils.StrToInt(XS.Core.RegexBll.RegexFind("images/br/([0-9]*).gif", sSEO, 1)); int iPr = XS.Core.XsUtils.StrToInt(XS.Core.RegexBll.RegexFind("/br/br([0-9]*).gif", sSEO, 1)); if (url.IsNewAdd) { url.AddBR = iBr; url.AddPR = iPr;//移动 BR } url.CurrentBR = iBr; url.CurrentPR = iPr; url.LastUpdateDate = DateTime.Now; url.IsNewAdd = false; url.IsOK = true; url.Info = "访问正常"; //string sHtml = XS.Core.WebUtils.LoadURLString(url.PUrl); List <FriendLinkModel> lvLinks = BLL.FriendLink.Instance.GetFriendLinks(url.PUrl); url.OutLinkCount = lvLinks.Count; if (lvLinks.Count > 0) { url.IsLinkBack = false; string sDomain = BLL.FriendLink.Instance.GetDomain(model.PUrl).Trim(); foreach (var outlink in lvLinks) { if (outlink.LinkUrl.IndexOf(sDomain) > -1)//有没有反向链接 { url.IsLinkBack = true; url.LinkBackText = outlink.LinkText; url.IsNofollow = outlink.IsNofollow; break; } } } else { url.IsLinkBack = true; url.IsOK = false; url.Info = "访问页面失败!"; } } catch (Exception e) { url.IsOK = false; url.Info = "无法访问"; } if (BLL.FriendLink.Instance.IsBadLink(url)) //发现异常,发送报告 { model.IsHaveBad = true; BLL.EmailQueue.Instance.AddEmailToDB("友情链接有异常", string.Format("来自{0}友情链接中的{1}发生异常,原因:{2}", model.PUrl, url.PUrl, url.IsOK ? "百度权重或GooglePr下降" : "无法访问" )); } } } model.LastTestDate = DateTime.Now; BLL.FriendLink.Instance.UpdateOne(model); if (model.IsHaveBad) { foreach (ListViewItem lvi in lvWebLinkUrl.Items) { if (lvi.SubItems[4].Text.Equals(model.Id.ToString())) { lvi.SubItems[2].Text = "有异常"; lvi.BackColor = Color.Red; break; } } } }