c#應用windows辦事更新站點地圖的具體示例。本站提示廣大學習愛好者:(c#應用windows辦事更新站點地圖的具體示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c#應用windows辦事更新站點地圖的具體示例正文
因為公司平台拜訪人數逐步增多,公司項目標數據庫曾經幾回湧現宕機景象。為加重數據庫壓力,我上個月對公司項目做了下調劑。把消息板塊提掏出來零丁一個站點,零丁一個數據庫。削減了主站點和數據庫的累贅和壓力。
但放在線上一個月,消息新的宣布數目起碼曾經有500篇閣下。百度只收錄了70個閣下,因而想到能夠是沒有站點地圖形成的。但怎樣准時更新站點地圖呢?
我測驗考試應用windows辦事來准時更新站點地圖。
起首須要懂得下幾個成績。
1、百度收錄的站點地圖(sitemap)的格局。概況請檢查該鏈接:檢查
今朝我只用到了xml格局的站點地圖,就講下xml格局的站點地圖。
xml格局:
各個標簽的說明:
<loc>www.example1.com</loc>該頁的網址。該值必需少於256個字節(必填項)。格局為<loc>您的url地址</loc>
<lastmod>2010-01-01</lastmod>該文件前次修正的日期(選填項)。格局為<lastmod>年-月-日</lastmod>
<changefreq> always </ changefreq >頁面能夠產生更改的頻率(選填項) 。
有用值為:always、hourly、daily、weekly、monthly、yearly、never
<priority>1.0</priority >此網頁的優先級。有用值規模從 0.0 到 1.0 (選填項) 。0.0優先級最低、1.0最高。
2、站點地圖更新的頻率成績
因為公司消息更新普通時光固定在9:30-18:00。天天年夜概宣布10——50篇消息,所以我假想更新站點地圖的時光在:9:00——19:00,每3個小時更新一次,其他時光不做任何操作,下降數據庫查詢的累贅。
開端寫windows 辦事。
1、新建windows辦事,給windows起個名字
2、添加裝置法式
雙擊Service1.cs進入視圖界面,右鍵,選擇“添加裝置法式”
添加今後的後果。
serviceInstaller1:辦事裝置組件。(重要用於設置 辦事稱號、辦事描寫、辦事能否開機啟動或延遲啟動、辦事啟動方法等)
serviceProcessInstaller1:辦事過程裝置組件(重要用戶設置運轉辦事的賬戶類型,如:User、LocalService、NetworkService、LocalSystem等)
serviceInstaller1的屬性設置(快捷鍵F4):
屬性解釋:
DelayedAutoStart:設置能否主動啟動
Description:辦事描寫
ServiceName:辦事稱號
StartType:啟動類型。有三種:Manual(啟動)、Automatic(主動)、Disabled(不啟動)
serviceProcessInstaller1屬性設置(快捷鍵F4):
屬性解釋:
Account:運轉辦事的賬戶類型。有四種:User、LocalService、NetworkService、LocalSystem。
我選擇的是LocalSystem,意思是:以後體系都能運轉。
3、准時觸提問題的一些須要留意的誤區。
准時觸發,年夜家確定想到的是Timer組件,但必定要記住。windows辦事下是沒有Timer控件的。。。。這裡看到的Timer組件是不會准時觸發的,須要本身完成Timer准時觸發的事宜,自己曾在此坑深陷多時。。。。
因為自己為了完成准時觸發的事宜可控性和可修正性。增長了一個設置裝備擺設文件。設置裝備擺設文件添加方法如圖:
windows辦事項目——右鍵——添加——新建項
設置裝備擺設文件設置:
4、准時windows辦事代碼:
public partial class NPcgoNewsService : ServiceBase
{
Timer aTimer = new Timer(); //System.Timers,不是form的
public NPcgoNewsService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
//一個一向重寫sitemap的辦事
aTimer.Elapsed += new ElapsedEventHandler(aTimer_Tick);
aTimer.Enabled = true;
aTimer.Interval = int.Parse(PublicMethods.GetAppSettings("NewsSiteUpdateTime")) * 1000; //設置裝備擺設文件中設置裝備擺設的秒數
aTimer.Start();
}
protected override void OnStop()
{
this.aTimer.Enabled = false;
this.aTimer.Stop();
}
/// <summary>
/// timer准時觸發
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void aTimer_Tick(object sender, ElapsedEventArgs e)
{
//挪用該辦事的時光為上午9點——下晝18點,其他時光不挪用
if (DateTime.Now.Hour >= 9 && DateTime.Now.Hour <= 19)
{
MakeSiteMap make = new MakeSiteMap();
make.GetBaiDuSiteMap();
}
}
}
生成百度地圖的辦法(GetBaiDuSiteMap):
/// <summary>
/// 生成百度站點地圖
/// </summary>
/// <returns></returns>
public void GetBaiDuSiteMap()
{
XmlDocument xmlDoc = new XmlDocument();
//獲得消息站點地圖的當地保留途徑
string path = Path.Combine(PublicMethods.GetAppSettings("NewsSiteMapPath"));
xmlDoc.Load(path);
//查找根節點
XmlNode root = xmlDoc.SelectSingleNode("urlset");
//刪除之前的一切老節點
root.RemoveAll();
#region 平台通知布告
//查詢最新100條平台通知布告
List<IT_NEWS> platformnotice = GetPlatformNotice();
if (platformnotice != null && platformnotice.Count > 0 && platformnotice[0].newsId > 0)
{
foreach (IT_NEWS platformNoticeNews in platformnotice)
{
XmlElement xesub1 = xmlDoc.CreateElement("url");
XmlElement xe1 = xmlDoc.CreateElement("loc");
xe1.InnerText = "http://news.npcgo.com" + "/notice-" + platformNoticeNews.newsType + "-" + platformNoticeNews.newsId + ".html";
XmlElement xe2 = xmlDoc.CreateElement("lastmod");
xe2.InnerText = Convert.ToDateTime(platformNoticeNews.newsCreateTime).ToString("yyyy-MM-dd");
XmlElement xe3 = xmlDoc.CreateElement("changefreq");
xe3.InnerText = "daily";
XmlElement xe4 = xmlDoc.CreateElement("priority");
xe4.InnerText = "0.2";
xesub1.AppendChild(xe1);
xesub1.AppendChild(xe2);
xesub1.AppendChild(xe3);
xesub1.AppendChild(xe4);
root.AppendChild(xesub1);
}
}
#endregion
xmlDoc.AppendChild(root);
xmlDoc.Save(path);
}
裝置windows辦事:
須要寫一個windows辦事裝置的批處置和卸載的批處置,都放在windows辦事項目標bin/Debug文件夾下。
裝置辦事,install.bat代碼:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe GameTradingNewsService.exe
Net Start NPCgoNewsServices
sc config NPCgoNewsServices start= auto
說明:
GameTradingNewsService.exe 是windows辦事項目編譯今後bin文件中的exe法式的稱號。
Net Start xxx 是開啟xxx辦事
NPCgoNewsServices 是windows辦事稱號(即:serviceInstaller1屬性面板設置的辦事稱號(serviceName屬性))
sc config NPCgoNewsServices start= auto 是設置windows辦事啟動方法為主動
卸載辦事 unstall.bat代碼:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u GameTradingNewsService.exe
GameTradingNewsService.exe 是windows辦事項目編譯今後bin文件中的exe法式的稱號
至此,一個辦事是完全完成。