PHPPodcast Publisher——一个概括了多入门知识的小Web应用

一个用来手动生成Podcast的RSS种子的小Web应用。用到了如下几独技术:

SQL Server 2005 Express

基本数据库结构为:

PHP 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的批量抹的法。不过自己所以的凡批量去的对取巧版,我PHP的调用代码如下:

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

相关文章