2009年6月2日 星期二

設定 asp.net 預設使用 sql server 執行 Form Based Authentication

1. 在sql server 新增資料庫 aspnetdb
2. 新增登入帳號 IIS POOL\DefaultAppPool (server->安全性 右鍵新增->登入),
並在使用者對應 勾選 aspnetdb 使用者選 IIS POOL\DefaultAppPool
3.利用 aspnet_regsql.exe (在 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\)將 asp.net基本的資料庫物件 新增到 aspnetdb裡面
4. 利用vs 修改web應用程式的資料庫來源
<
connectionStrings>
<
remove name="LocalSqlServer">
<
add name="LocalSqlServer" connectionstring="Data Source=servername\SQLEXPRESS;Initial Catalog=aspnetdb;Integrated Security=True" providername="System.Data.SqlClient">

5.設定表單驗證
<
authentication mode="Forms">
<
system.web>
<
forms loginurl="Login.aspx" name=".ASPXFORMSAUTH">
<
authentication mode="Forms">
<
form loginurl="Login.aspx" name=".ASPXFORMSAUTH">


<
authentication>
<
deny users="?" />




----------------------------------------------------------------------------------------------
參考

http://1-800-magic.blogspot.com/2009/05/free-web-development-tools-for.html
設定MS SQL server 權限(整套free 網站開發 server安裝步驟)

http://aspalliance.com/743_Custom_FormBased_Authentication_in_ASPNET.2
設定asp.net預設資料庫物件與Form Based Authentication

延伸

http://www.bigresource.com/MS_SQL-rsreportserver-config-memorylimit-ignored-FCw3LjBT.html
FBA延伸議題

http://msdn.microsoft.com/en-us/library/system.web.security.aspx
asp.net 安全相關的namespace

2009年6月1日 星期一

在asp.net得到request 中 相同id的值


方法一
string
[] nameParts = Request.Params.GetValues("txtName");
string firstName = nameParts[0];
string middleName = nameParts[1];
string lastName = nameParts[2];
方法二

string s = "";
NameValueCollection coll;
coll=Request.Form;
if(Request.Form["cols1"]!=null)
{
//NameValueCollection coll;
//String[] arr1 = coll.AllKeys;
String[] arr1 = coll.GetValues("cols1");
for(int i=0;i < arr1.Length;i++)
{
s+=arr1[i].ToString();
}


Response.Write(s);
}

}


================================
需要System.Collections.Specialized

-------------------------------------------------------------------------------------------------
參考:

http://msdn.microsoft.com/zh-tw/library/system.collections.specialized.namevaluecollection%28VS.80%29.aspx#Mtps_DropDownFilterText

http://hi.baidu.com/kootv/blog/item/2d474f0824d4459d0b7b8245.html

http://topic.csdn.net/t/20020915/11/1024834.html

2009年5月31日 星期日

asp.net SMTP寄信的功能

using System.Net.Mail;

MailMessage msg = new MailMessage();
msg.From = new MailAddress("id@gmail.com", "Me");
msg.To.Add(new MailAddress("id@gmail.com", "User"));
msg.Subject = "主題" ;
msg.Body = "信件內文" ;
msg.IsBodyHtml = true ;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("127.0.0.1") ;
smtp.Send(msg);
-------------------------------------------------------------------------------------------------
IMM Server 之 Email 必須透過Local SMTP Service來傳遞,因此會建議安裝 IIS SMTP Service 以支援該功能。
但預設的 IIS SMTP 設定是不允許幫你轉發信件的,必須做下述的設定:

1. 開啟 [IIS 管理員] 之 [預設 SMTP 虛擬伺服器] 設定


2. 在 [存取] 的畫面中,針對 [轉換限制] 進行設定,將該台機器的 IP 加入可允許的清單中,例如 "127.0.0.1" 及 "192.168.1.195"



3. 在 [傳遞] -> [進階...] 的畫面中,設定你的網域及智慧主機。所謂智慧主機代表此IIS SMTP Service會將信送至該智慧主機,再由該智慧主機將信件送至接收者。



3. 使用 DocuPack 中的 SMTP_Tester 來進行測試,若可發信成功,則在 Send Result 畫面中會顯示成功,你也可用一般看信軟體去確認該用戶是否有收到該測試信件。


------------------------------------------------------------------------------------------------------

參考:
http://forum.docutek.com.tw/index.php?topic=125.0
http://blog.blueshop.com.tw/ajun/archive/2006/07/24/34592.aspx

2009年5月10日 星期日

char,varchar,nchar,nvarchar,text,ntext比較一下

var:不定長度→有多長存多長
n:Unicode→無論英文、數字、中文、日文、...每個字都占2Byte。

最大長度(ms-sql)

char 1~8000
varchar 1~8000 max 2^31-1 bytes 可為0
nchar 1~4000
nvarchar 1~4000 max 2^31-1 bytes 可為0

text 將改為 varchar(max)
ntext 將改為 nvarchar(max)

參考來源:
1.http://www.dotblogs.com.tw/topcat/archive/2008/03/04/1144.aspx
2.MSDN

2009年4月25日 星期六

IIS7 連結 SQLSERVER

應用程式池(Application Pool)設為Classic .NET AppPool,網站目錄裡對每個網站設置,也可以在網站進行單獨設置。
在SQLServer 資料庫新增使用者Authenticated Users,設定角色為擁有者。