Inside NBear Starter Kit (二) 不使用附带数据库的安装方法
具体常规的安装方法我这里就不描述了,方法见我的上一篇文章Inside NBear Starter Kit (一) 安装配置,里面有详细的介绍。我下面要说的是在不使用NBear Starter Kit 自带数据库的安装方法。下面开始:
一:建立基本的数据库
修改NBear.design里面的LiEntities.cs文件,给每个Interface都添加一个[ReadOnly]属性,这样防止数据库被覆盖。修改完代码如下
1
using System;
2
using NBear.Common.Design;
3![]()
4
namespace NBear.Designs
5
{
6
[MappingName("nb_Articles")]
7
[ReadOnly]
8
public interface nb_Articles_List_0 : Entity
9
{
10
[PrimaryKey]
11
int Id { get; }
12
int Sort_Id { get; }
13
[SqlType("nvarchar(128)")]
14
string Title { get; set; }
15
DateTime UpdateTime { get; set; }
16
DateTime CreateTime { get; set; }
17
}
18
[MappingName("nb_PageParts")]
19
[ReadOnly]
20
public interface nb_PageParts_List_0 : Entity
21
{
22
[PrimaryKey]
23
int Id { get; }
24
[SqlType("nvarchar(128)")]
25
string Title { get; set; }
26
}
27
[MappingName("vw_aspnet_MembershipUsers")]
28
[ReadOnly]
29
public interface nb_Users_List_0 : Entity
30
{
31
[PrimaryKey]
32
Guid UserId { get; set; }
33
string UserName { get; set; }
34
string Email { get; set; }
35
DateTime CreateDate { get; set; }
36
}
37
}
using System;2
using NBear.Common.Design;3

4
namespace NBear.Designs5
{6
[MappingName("nb_Articles")]7
[ReadOnly]8
public interface nb_Articles_List_0 : Entity9
{10
[PrimaryKey]11
int Id { get; }12
int Sort_Id { get; }13
[SqlType("nvarchar(128)")]14
string Title { get; set; }15
DateTime UpdateTime { get; set; }16
DateTime CreateTime { get; set; }17
}18
[MappingName("nb_PageParts")]19
[ReadOnly]20
public interface nb_PageParts_List_0 : Entity21
{22
[PrimaryKey]23
int Id { get; }24
[SqlType("nvarchar(128)")]25
string Title { get; set; }26
}27
[MappingName("vw_aspnet_MembershipUsers")]28
[ReadOnly]29
public interface nb_Users_List_0 : Entity30
{31
[PrimaryKey]32
Guid UserId { get; set; }33
string UserName { get; set; }34
string Email { get; set; }35
DateTime CreateDate { get; set; }36
}37
}二:建立NBear Starter Kit里面的Membership Roles 等用户认证和权限管理需用数据库。
这个数据库的建立要用到一个工具aspnet_regsql.exe,DotNet 自带的。假设你DotNet Framework 安装到默认的路径,那么她的地址是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727。直接运行她,出现向导(会先闪过一个command),根据向导,选择咱们自建的那个Nbear_Web数据库就ok了,现在在数据库中就添加了一系列的aspnet开头的表、视图和存储过程。
三:修改pageparts.ascx.cs的代码。
这个是因为NBear Starter Kit作为一个示例,没有考虑太多的通用性,在首页对pagepart的调用都是直接指定ID,如果用自己建立的数据库就会找不到或者找错ID造成错误,我把他的代码修改,增加了容错性能,防止错误的发生。
1
using System;
2![]()
3
public partial class UserControls_Common_PageParts : System.Web.UI.UserControl
4
{
5
// ******************************************************************************************************
6
public int PagePartId;
7
// ******************************************************************************************************
8
protected void Page_Load(object sender, EventArgs e)
9
{
10
if (IsPostBack) { return; }
11
BindData();
12
}
13
// ******************************************************************************************************
14
protected void BindData()
15
{
16
try
17
{
18
ltlHtml.Text = (Page as BasePage).PagePartsDic[PagePartId].Replace("{RootPath}", (Page as BasePage).RootPath);
19
}
20
catch
21
{
22
ltlHtml.Text = "暂时没有内容";
23
}
24
finally
25
{
26
}
27
}
28
// ******************************************************************************************************
29
}
虽然现在的通用性还是很低,我会进一步修改,增加通用性的,准备把她做成一个通用性高点的程序。
using System;2

3
public partial class UserControls_Common_PageParts : System.Web.UI.UserControl4
{5
// ******************************************************************************************************6
public int PagePartId;7
// ******************************************************************************************************8
protected void Page_Load(object sender, EventArgs e)9
{10
if (IsPostBack) { return; }11
BindData();12
}13
// ******************************************************************************************************14
protected void BindData()15
{16
try17
{18
ltlHtml.Text = (Page as BasePage).PagePartsDic[PagePartId].Replace("{RootPath}", (Page as BasePage).RootPath);19
}20
catch21
{22
ltlHtml.Text = "暂时没有内容";23
}24
finally25
{26
}27
}28
// ******************************************************************************************************29
}四:修改web.config里面的关于role membership等想过块的内容,以便让自己可以登录进去
因为是自己建立的数据库,原先的那些附带的用户名和密码都已经无效了。要管理就要先自己建立用户,那么就需要修改web.config的内容,把她的基于forms base的认证方式给换一下,改成none。
我们需要修改的web.config有三个,下面给出路径和修改内容的代码
默认的web.config
<!-- authentication -->
<authentication mode="None">
<forms loginUrl="~/Login.aspx" name="Nbear_FormsAUTH" protection="All" timeout="20160"/>
</authentication>Admin目录下面的Web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrators"/>
<allow roles="Super Users"/>
<!--
<deny users="*"/>
-->
<allow users="?">
</authorization>
</system.web>
</configuration>
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrators"/>
<!--
<deny users="*"/>
-->
<allow users="?">
</authorization>
</system.web>
</configuration>五:添加ManageRoles.aspx文件,添加Roles
这个我已经给出了,主要是添加系统默认的两个Roles Administrators和Super Users,这样才能让你该会原来web.config的时候也可以有权利访问Admin和Users目录。具体的原因可以参考asp.net 2.0的新特性 苏鹏讲的webcast的第六节课,asp.net 2.0 内建安全机制。代码包含在最后上传的代码中。
六:修改AdminMenu.ascx,添加manageroles.aspx的选项
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AdminMenu.ascx.cs" Inherits="UserControls_Common_Menu" %><ul id="AdminMenu">
<li class="Ornament"> </li>
<li><asp:HyperLink ID="SaveArticle" runat="server" Text="添加文章" NavigateUrl="~/Admin/Modules/Articles/Save.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="ManageArticles" runat="server" Text="管理文章" NavigateUrl="~/Admin/Modules/Articles/Manage.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="SavePagePart" runat="server" Text="添加网页片" NavigateUrl="~/Admin/Modules/PageParts/Save.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="ManagePageParts" runat="server" Text="管理网页片" NavigateUrl="~/Admin/Modules/PageParts/Manage.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="ManageSorts" runat="server" Text="管理分类" NavigateUrl="~/Admin/Modules/Sorts/Manage.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="SaveUser" runat="server" Text="添加用户" NavigateUrl="~/Admin/Modules/Users/SaveUser.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="ManageUsers" runat="server" Text="管理用户" NavigateUrl="~/Admin/Modules/Users/ManageUsers.aspx"></asp:HyperLink></li>
<li><asp:HyperLink ID="ManageRoles" runat="server" Text="管理规则" NavigateUrl="~/Admin/Modules/Users/ManageRoles.aspx"></asp:HyperLink></li>
<li><asp:LoginStatus ID="LoginStatus1" runat="server" LogoutText="Logout" LogoutPageUrl="~/" /></li>
</ul>需要添加两个,下面是给出的标题和代码
Default Page Top
<div style="BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid">
<p><strong>Welcome to NBear WebSite</strong></p>
</div>
<div class="LeftMenu">
<div class="Caption"><a></a>导航|NAVIGATION</div>
<ul>
<li><a href="{RootPath}Modules/Articles/List.aspx?i=2">新闻|NEWS</a> </li>
<li><a href="{RootPath}Modules/Articles/List.aspx?i=1">下载|DOWNLOD</a> </li>
</ul>
</div>
<br />
<div class="LeftMenu">
<div class="Caption">链接|LINKS</div>
<ul>
<li><a target="_blank" href="http://nbteam.cnblogs.com/">团队博客|Team Blog</a> </li>
<li><a target="_blank" href="http://groups.google.com/group/nbeargroup">论坛|Google Group</a> </li>
</ul>
</div>在manageroles.aspx里面添加roles Administrator和Super Users就oK了。
经过以上8个步骤,现在的NBear Starter Kit已经可以运行,并且有了和导入数据库差不多的功能,当然还有瑕疵,这个以后慢慢修改。
下面是代码下载(因为有上传限制,分为三卷):
https://files.cnblogs.com/pinzui/NBearPinzui.part01.rar
https://files.cnblogs.com/pinzui/NBearPinzui.part02.rar
https://files.cnblogs.com/pinzui/NBearPinzui.part03.rar


浙公网安备 33010602011771号