SQL ServerPodcast Publisher——一个概括了强入门知识的小Web应用

一个用于手动生成Podcast的RSS种子的小Web应用。用到了之类几独技术:

SQL Server 2005 Express

主干数据库结构吧:

SQL Server 1

其中UserId等于aspnet_Users表中的UserId,而Items通过UserId和ChannelName共同外键关联Channels

ASP.NET 2.0 Membership Service

默认情况下,通过VS的ASP.NET
Configuration功能来针对网站添加Membership等职能,会自行抬高一个ASPNET的数据库文件,那么怎样行使现存的数据库也?

《如何以存活通过AttachDbFilename连接的Sql Express数据库及安装membership》

另外,再按如下设置即可:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">

<providers>

<clear />

<add name="SqlProvider" 

type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 

connectionStringName="PodcastPublisherConnectionString" applicationName="PodcastPublisher" enablePasswordRetrieval="false" 

enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Hashed" 

minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" />

</providers>

</membership> 

其中,管applicationName的默认值“/”改也“PodcastPublisher”大凡用作下托管为虚拟目录上,而不根站点。

ASP.NET Login Control

跟ASP.NET 2.0 Membership
Service结合,可以无去好写登录,注销的代码,还会活动完成注册新用户,改变密码,重置密码的效能。大家好起代码中观看,我于Default.aspx、Login.aspx、Register.aspx和ChangePassword.aspx中从来未曾写一句后置代码。

其实在IIS7中,报到控件还会用于PHP的Web应用程序。

SqlDataSource Control

ASP.NET 2.0供了扳平栽新特色Data Source
Control,包括ObjectDataSource、SqlDataSource、AccessDataSource和XmlDataSource,在ASP.NET
3.5遭受,额外包括了LinqDataSource。

每当是示例程序中,我同开始自想用LinqDataSource的,也确基本都勾好了,可惜调试运行的下总是添加数据产生问题(后面说问题发出当那里)。后来不得不改用SqlDataSource。

透过将SqlDataSource和GridView、DetailsView想成,可以好轻地开出操作数据的页面。如Channels.aspx和Items.aspx。

当此出一个艺,哪根据登录用户筛选数据,添加数量经常怎样添加当前用户之ID呢

先是编写一个方式来赢得UserId,并在Session中添加这个价值

protected void Page_Load(object sender, EventArgs e)

{

if (this.Session["UserId"] == null)

{

this.Session.Add("UserId", GetUserId());

}

} 



private Guid GetUserId()

{

MembershipUser user = Membership.GetUser();

return (Guid)user.ProviderUserKey;

} 

然后,在SqlDataSource中,设置SelectCommand=”SELECT [Name], [Title],
[Link], [Description], [Language], [Copyright],
[LastBuildDate] FROM [Channels] WHERE ([UserId] = @UserId)”
,以及安装

<SelectParameters>

<asp:SessionParameter Name="UserId" SessionField="UserId"/>

</SelectParameters> 

InsertParameters操作为是同理。在LinqDataSource中,这个参数老是差,就终于自己根据网直达之材料,把Type改也“Empty”还是十分(可以Select,但是Insert就出问题)。

上述这些参数可以通过设计器来增长,即使使用SqlDataSource的SmartTag来操作,不过若是记将参数的Type删除掉,不然不识别Guid的项目。

此外一个不怎么技巧,什么把GridView、DetailsView显示的数并啊?只需要这样:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)

{

DetailsView1.PageIndex = GridView1.SelectedIndex;

} 

ASP.NET AJAX的使用

本身这边虽老大粗略地采用UpdatePanel,以及UpdateProgress。具体的看Channels.aspx和Items.aspx页面。

LINQ to SQL

一致开始下SqlDataSource的下,没有察觉而取其中多少这样麻烦,所以索性直接动用LINQ
to SQL获取数据。见Items.aspx.cs中之Button1_Click

LINQ to XML

自我下LINQ to
XML来转特定格式的xml,并保存在数据库的某个字段中。这里产生个小技巧,就是生成xml数据的嵌套:

XDocument xdoc = new XDocument(

new XElement("rss", new XAttribute("version", "2.0"),

new XElement("channel",

new XElement("title", channel.Title),

new XElement("link", channel.Link ?? ""),

new XElement("description", channel.Description ?? ""),

new XElement("language", channel.Language ?? ""),

new XElement("copyright", channel.Copyright ?? ""),

new XElement("lastBuildDate", DateTime.Now),

new XElement("generator", "Podcast Publisher"),

new XElement("webMaster", Session["UserId"].ToString()),

new XElement("ttl", 1),

GetChildItems(channel.Items)

)

)

); 

LINQ to SQL批量删除数据

马上篇文章遇,我详细介绍了LINQ
to
SQL的批量刨除的方法。不过自己因此之是批量删减的对取巧版,我的调用代码如下:

DataClassesDataContext dc = new DataClassesDataContext();

var query = from item in dc.Items

where item.UserId == userId && item.ChannelName == chName && item.PubDate.AddDays(10)<= DateTime.Now

select item;

dc.DeleteAll(query); 

IIS7 URL Rewrite Module

由此IIS7的管理器进行配备,保存在web.config中:

<rewrite>

<rules>

<rule name="RSS">

<match url="([_0-9a-z-]+)/([_0-9a-z-]+)/rss" />

<action type="Rewrite" url="rss.aspx?user={R:1}&amp;channel={R:2}" />

</rule>

</rules>

</rewrite> 

当时是管针对rss.aspx的拜会转发也username/channelname/rss的地址

有关IIS7的行使可以拘留这里:http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

下载在此间:http://blogs.iis.net/bills/archive/2008/07/09/new-iis7-releases-url-rewrite-application-routing-and-load-balancing-and-powershell-cmd-lets.aspx

========================

举示例程序的源代码下载地址:http://www.91files.com/?YN9F9KU1PNB71UQR9FWD

相关文章