SQL ServerPodcast Publisher——多个回顾了二种入门知识的小Web应用

三个用于手动生成Podcast的揽胜SS种子的小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中,SQL Server,签到控件还是能用来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”依旧13分(能够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

相关文章