public string GetRSSResult(int rssid, int count) { string resultStr = ""; try { RSSDBDataContext data = new RSSDBDataContext(); List <RSSItem> items = (from rssitem in data.RSSItems where rssitem.ID == rssid select rssitem).ToList(); if (items.Count == 0) { return(CreateXmlErrorMessage("Error!", "Not exist RSSItem with ID = " + rssid.ToString())); } RSSItem item = items[0]; //kiểm tra bool test_1 = true; bool test_2 = true; int currentUserID = GetCurrentUserID(); if (item.Tab.UserID != currentUserID) { test_1 = false; } int tabParentID = item.TabID; List <Share> listOfShare_test = (from share in data.Shares where share.TabID == tabParentID && share.AccountID == currentUserID select share).ToList(); if (listOfShare_test.Count == 0) { test_2 = false; } if (!test_1 && !test_2) { return(CreateXmlErrorMessage("Error!", "Permission Denied")); } //------------------------------------------------------ if (item.PluginID == null) { string rssLink = item.RSSLink; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(rssLink); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); XmlDocument doc = new XmlDocument(); doc.LoadXml(reader.ReadToEnd()); XmlNode rssNode = doc.DocumentElement.SelectSingleNode("//rss"); XmlNode channelNode = rssNode.SelectSingleNode("./channel"); XmlNodeList listOfItemnNode = channelNode.SelectNodes(".//item"); int nItemNode = listOfItemnNode.Count; for (int i = count; i < nItemNode; i++) { if (i < 0) { continue; } channelNode.RemoveChild(listOfItemnNode[i]); } resultStr = doc.OuterXml; } else { List <RSSPlugin> itemPlugins = (from plu in data.RSSPlugins where plu.ID == item.PluginID select plu).ToList(); if (itemPlugins.Count == 0) { return(CreateXmlErrorMessage("Error!", "Not exist RSSItem with ID = " + rssid.ToString())); } RSSPlugin itemPlugin = itemPlugins[0]; string[] fileNames = Directory.GetFiles(Server.MapPath("~") + @"\bin", itemPlugin.DLLName); foreach (string fileName in fileNames) { Assembly asm = Assembly.LoadFile(fileName); Type[] types = asm.GetTypes(); foreach (Type type in types) { if (type.GetInterface("IRSSPlugin") != null) { IRSSPlugin pluginObject = Activator.CreateInstance(type) as IRSSPlugin; return(pluginObject.GetRSSResult(count)); } } } } } catch { return(CreateXmlErrorMessage("Error!", "Some thing wrong" + rssid.ToString())); } finally { } return(resultStr); }