C#ASP.NET中的连接字符串问题

C#ASP.NET中的连接字符串问题,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我目前正在做的程序是一个购物车的注册页面,我已经设置了一个带有表的SQL Server,允许将数据记录为 用户名 电子邮件 所有密码都设置为Nvarchar(max) .NET Framework的版本是4.5,我使用的是VS 2012,我使用的是C#编码,服务器是一个SQL server实例KENSULLIVAN-PC\KSSQL,使用集成的Windows身份验证 到目前为止,我已经能够运行注册页面,它将保存一个cookie信息,但不会向SQLServer中的表发送任何信息 using Sys

我目前正在做的程序是一个购物车的注册页面,我已经设置了一个带有表的SQL Server,允许将数据记录为

  • 用户名
  • 电子邮件
  • 所有密码都设置为
    Nvarchar(max)
    .NET Framework的版本是4.5,我使用的是VS 2012,我使用的是C#编码,服务器是一个SQL server实例
    KENSULLIVAN-PC\KSSQL
    ,使用集成的Windows身份验证

    到目前为止,我已经能够运行注册页面,它将保存一个cookie信息,但不会向SQLServer中的表发送任何信息

    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);  
        }
    }
    
    我应该做些什么不同的事情,你注意到哪些不是真正推荐的

    谢谢,,
    肯尼思

    我发现了几个可能的问题

    首先,SQL数据库的实例名称应该使用反斜杠。当然,您需要避开反斜杠,因此请尝试以下操作:

    SqlConnection conn = new SqlConnection("Server=KENSULLIVAN-PC\\KSSQL;Database=GroupProject; Integrated Security=True");
    
    其次,ASP.NET的集成安全性可能有点棘手,因为它通常是从服务或系统帐户运行的。您可能希望在MS-SQL中启用混合身份验证模式,创建SQL帐户,并传入用户名和密码。我建议将连接字符串存储在web.config中并对其进行加密


    您是否收到了特定的错误/异常?这将对我们非常有帮助。

    首先@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");
    
    第二,因为您使用的是窗口身份验证,所以需要设置线程池,使web应用程序在windows域帐户下运行,该帐户对后端数据库具有足够的权限


    如果使用您的网站的每个用户都使用windows域帐户登录,并且您希望使用用户的windows域凭据访问后端数据库,那么您需要更多设置,您需要模拟,您可能还需要受约束的委派

    与其使用
    反斜杠
    为什么不直接对逐字字符串使用
    @
    如果您使用的是.Net
    ,他提到了asp.Net、visual studio和C:-)