2013-04-03 196 views
2

目前的計劃我的工作是爲購物車的註冊頁面,我已經安裝了桌子一個SQL Server允許數據被記錄爲連接字符串問題

  1. 用戶名,
  2. 電子郵件,
  3. 密碼全部設置爲Nvarchar(max)

.NET Framework的版本是4.5,我使用的是VS 2012,並且使用C#編碼,而服務器是使用集成Windows身份驗證的SQL Server實例KENSULLIVAN-PC\KSSQL

到目前爲止,我已經能夠運行註冊頁面,它將保存信息的cookie,但不發送任何信息到SQL Server中的表。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 

public partial class Account_Register : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     RegisterUser.ContinueDestinationPageUrl = Request.QueryString["ReturnUrl"];  
    } 
    //Submit button for user registration information 
    protected void RegisterUser_CreatedUser(object sender, EventArgs e) 
    { 
     int TheUserID = 5000; 
     SqlConnection conn = new SqlConnection("Server=KENSULLIVAN-PC/KSSQL;Database=GroupProject; Integrated Security=True"); 

     //INSERT command for values to be updated or added to the Database 
     SqlCommand comm = new SqlCommand("INSERT INTO RegUser (UserName, Email, Password) VALUES (@UserName, @Email, @Password)", conn); 
     comm.Parameters.Add("@UserName", System.Data.SqlDbType.NVarChar, 100); 
     comm.Parameters["@UserName"].Value = RegisterUser.UserName; 
     comm.Parameters.Add("@Email", System.Data.SqlDbType.NVarChar, 100); 
     comm.Parameters["@Email"].Value = RegisterUser.Email; 
     comm.Parameters.Add("@Password", System.Data.SqlDbType.NVarChar, 100); 
     comm.Parameters["@Password"].Value = RegisterUser.Password;  

     try 
     { 
      conn.Open(); 
      comm.ExecuteNonQuery(); 
      Response.Redirect("~/LoggedIn.aspx"); 
     } 
     catch 
     { 
      //ErrorDB.Text = "Error Submitting, Try Again"; 
     } 
     finally 
     { 
      conn.Close(); 
     } 

     FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */); 
     string continueUrl = RegisterUser.ContinueDestinationPageUrl; 

     if (String.IsNullOrEmpty(continueUrl)) 
     { 
      continueUrl = "~/LoggedIn.aspx"; 
     } 
     Response.Redirect(continueUrl); 
    } 
} 

我應該做什麼不同,你有什麼注意到,這不是真的建議?

謝謝 肯尼斯

回答

2

我看到一對夫婦的可能的問題。

首先,SQL數據庫的實例名稱應該使用反斜槓。當然,你需要轉義反斜槓,那麼試試這個:

SqlConnection conn = new SqlConnection("Server=KENSULLIVAN-PC\\KSSQL;Database=GroupProject; Integrated Security=True"); 

其次,集成的安全性可以從ASP.NET有點棘手,因爲很多時候,它是從一個服務或系統帳戶下運行。您可能希望在MS-SQL中啓用MIXED身份驗證模式,創建一個SQL帳戶並傳入用戶名和密碼。我建議將連接字符串存儲在web.config中並對其進行加密。

您是否收到特定的錯誤/異常?這對我們非常有幫助。

+0

而不是使用'反斜槓'爲什麼不只是使用'@'逐字字符串? –

+0

這是另一種選擇。 6,另一半,另一半... –

0

所有@Adam首先已經指出的那樣,你的連接字符串的問題,對於SQL Server的命名實例,如果您使用的是.NET,它應該是反斜槓

SqlConnection conn = new SqlConnection("Server=KENSULLIVAN-PC\\KSSQL;Database=GroupProject; Integrated Security=True"); 
或使用@

SqlConnection conn = new SqlConnection(@"Server=KENSULLIVAN-PC\KSSQL;Database=GroupProject; Integrated Security=True"); 

二,因爲您使用的是Windows身份驗證,所以您需要將您的Web應用程序託管的ThreadPool設置爲在Windows域帳戶下運行,該帳戶具有足夠的後端數據庫權限。

如果每個用戶使用您的網站使用Windows域帳戶登錄,並且想要使用用戶的窗口域憑據訪問後端數據庫,那麼您需要更多設置,需要模擬,您可能還需要約束授權。

+0

'如果您使用.Net',他提到了asp.net,visual studio和C#:-) –