Having the Result Set of a Stored Proc Sent to You by RSS Feed.
Having the Result Set of a Stored Proc Sent to You by RSS Feed.
by JBrooks 14. 十二月 2010 12:44
I wanted to monitor one of my system from my desk top and from my phone. I found a simple solution whereby I can subscribe to the result set of a stored proc by using RSS. So I can have this feed MS Outlook, my phone or my web browser.
First, Visual Studio 2010 makes creating an RSS feed a simple matter that is about 1 page of code.
I simply add an ASPX page to my project and remove most of the markup so it only has 2 lines:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="RSS.rss" %>
<%@ OutputCache Duration="60" VaryByParam="none" %>
Next the code behind simply calls the stored proc placing the results into a table and then loading up some of the RSS related collections VS2010 gives you.
using System;
using System.Data;
using System.ServiceModel.Syndication;
using System.Web;
using System.Collections.Generic;
using System.Xml;
namespace RSS
{
public partial class rss : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string id = Request.QueryString["id"];
// I don't want just anyone to subscribe, so you have to know the GUID.
if (id== null || id != "23F14EA1-1B20-443B-9B94-92C4EA4A8099")
throw new Exception("Guid not reconized");
Response.ContentType = "application/atom+xml";
// this gets the data from the database and populates a table.
DataTable dt = cDB.getFeed();
SyndicationFeed myFeed = new SyndicationFeed();
myFeed.Title = TextSyndicationContent.CreatePlaintextContent("SampleApp Activity");
myFeed.Description = TextSyndicationContent
.CreatePlaintextContent(@"A syndication of the most recently
SampleApp activity including exceptions.");
myFeed.Links.Add(SyndicationLink.CreateAlternateLink(
new Uri(GetFullyQualifiedUrl("/rss.aspx"))));
myFeed.Links.Add(SyndicationLink.CreateSelfLink(
new Uri(GetFullyQualifiedUrl(Request.RawUrl))));
myFeed.Copyright = TextSyndicationContent
.CreatePlaintextContent("Copyright SampleApp");
myFeed.Language = "en-us";
List<SyndicationItem> feedItems = new List<SyndicationItem>();
foreach (DataRow dr in dt.Rows)
{
SyndicationItem item = new SyndicationItem();
item.Title = TextSyndicationContent.CreatePlaintextContent(dr["title"].ToString());
SyndicationPerson authInfo = new SyndicationPerson();
authInfo.Email = "SampleApp@YourDomain.com";
item.Authors.Add(authInfo);
// RSS feeds can only have one author.
// The stored proc returns different categories of data that I am interested in.
switch (dr["category"].ToString())
{
case "WindFarms":
case "WindFarms ":
item.Links.Add(SyndicationLink.CreateAlternateLink(
new Uri(GetFullyQualifiedUrl("/WindFarms.aspx"))));
authInfo.Name = "SampleApp WindFarm";
break;
case "Exceptions":
item.Links.Add(SyndicationLink.CreateAlternateLink(
new Uri(GetFullyQualifiedUrl("/ErrorLog.aspx"))));
authInfo.Name = "SampleApp Exception";
break;
default:
authInfo.Name = "SampleApp";
break;
}
item.Summary = TextSyndicationContent.CreatePlaintextContent(
dr["summary"].ToString());
item.Categories.Add(new SyndicationCategory(dr["category"].ToString()));
item.PublishDate = DateTime.Parse(dr["pubdate"].ToString());
item.LastUpdatedTime = item.PublishDate;
item.Id = item.PublishDate.ToString();
// Add the item to the feed
feedItems.Add(item);
}
myFeed.Items = feedItems;
XmlWriter feedWriter = XmlWriter.Create(Response.OutputStream);
// Use Atom 1.0
Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(myFeed);
atomFormatter.WriteTo(feedWriter);
feedWriter.Close();
}
private string GetFullyQualifiedUrl(string s)
{
Uri u = new Uri(HttpContext.Current.Request.Url, s);
return u.ToString();
}
}
}
To have this feed my Outlook RSS folder I just need to right click “RSS Feeds” and select “Add a New RSS Feed…”.
![]()
Then enter the URL of my RSS feed. Don’t forget to add the GUID at the end with ?id=23F14EA1-1B20-443B-9B94-92C4EA4A8099
![]()
If you site uses authentication in your site you will have to turn it off for the rss.aspx page. To do this you would add an entry in your web config file:
<location path="rss.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
You should now have a folder in Outlook that will get populated by the feed.
Having the Result Set of a Stored Proc Sent to You by RSS Feed.的更多相关文章
- MySQL5.7: Paging using Mysql Stored Proc
-- 查询外键 涂聚文 (Geovin Du) select concat(table_name, '.', column_name) as 'foreign key', concat(referen ...
- Creating a SharePoint BCS .NET Connectivity Assembly to Crawl RSS Data in Visual Studio 2010
from:http://blog.tallan.com/2012/07/18/creating-a-sharepoint-bcs-net-assembly-connector-to-crawl-rss ...
- [转]How to get return values and output values from a stored procedure with EF Core?
本文转自:https://stackoverflow.com/questions/43935345/how-to-get-return-values-and-output-values-from-a- ...
- [转]SSIS Execute SQL Task : Mapping Parameters And Result Sets
本文转自:http://www.programmersedge.com/post/2013/03/05/ssis-execute-sql-task-mapping-parameters-and-res ...
- Support for multiple result sets
https://blueprints.launchpad.net/myconnpy/+spec/sp-multi-resultsets Calling a stored procedure can p ...
- Using Stored Programs with MySQLdb
http://flylib.com/books/en/1.142.1.125/1/ Using Stored Programs with MySQLdb The techniques for call ...
- [转]Entity Framework Sprocs with Multiple Result Sets
本文转自:https://msdn.microsoft.com/en-us/data/jj691402.aspx Entity Framework Sprocs with Multiple Resul ...
- Mini ORM——PetaPoco笔记
Mini ORM--PetaPoco笔记 记录一下petapoco官网博客的一些要点.这些博客记录了PetaPoco是如何一步步改进的. 目录: Announcing PetaPoco PetaPoc ...
- Mini ORM——PetaPoco笔记(转)
记录一下petapoco官网博客的一些要点.这些博客记录了PetaPoco是如何一步步改进的. 目录: Announcing PetaPoco PetaPoco-Improvements PetaPo ...
随机推荐
- nginx.conf 配置文件详解
简单的实现nginx在前端做反向代理服务器的例子,处理js.png等静态文件,jsp等动态请求转发到其它服务器tomcat: user www www; worker_processes ; erro ...
- 【转】在eclipse上使用Git
在eclipse上安装好git插件后,进行操作 安装好后,进行,一个简单配置,填入我们的用户名和邮箱 >>Preferences>Team>Git>Configurati ...
- 【转载】Redis的一些使用场景
看了一些文章,关于Redis的使用场景,觉得挺好的.Redis肯定远远不止作为缓存而使用.Redis更像是一个实现很好的数据结构服务器,通过TCP栈协议提供服务.下面进行详细描述. http://da ...
- Win8环境下 IIS6部署MVC网站出现的无法显示此网页错误
在Win7环境下做好的网站,新的Win8环境发布出现如下图错误: 解决方法如下: 运行:
- Linux进程控制(三)
1. 进程间打开文件的继承 1.1. 用fork继承打开的文件 fork以后的子进程自动继承了父进程的打开的文件,继承以后,父进程关闭打开的文件不会对子进程造成影响. 示例: #include < ...
- CSS之可收缩的底部边框
简述 <div>用来定义文档中的分区或节,<span>用来组合文档中的行内元素.我们可以通过<div>和 <span>将HTML元素组合起来. 下面我们 ...
- java金额的加减乘除
package com.wedge.edp.framework.common.util; import java.math.BigDecimal; /** * 金额的加减乘除 */ public cl ...
- 学习java之利用泛型访问自己定义的类
如果有多个类,而且他们其中有一些方法是相同的,我是选择在每个类中都把这些方法实现一遍呢,还是选择泛型.我今天自己花了一点时间看了看泛型,实践了一下. Holder.java package regex ...
- AIX系统管理员--第一章笔记
IBM产品系列 x系类为PC服务器-- e-server x x表示x-architecture 可自由选择运行环境,windows.linux.unix等 p系类为 ...
- 使用Spring 3的@value简化配置文件的读取
Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 1.在applicationContext.xml文件中配置properties文件 & ...