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

标签 c# asp.net sql-server

我正在开发的当前程序是购物车的注册页面,我设置了一个带有表的 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);  
    }
}

我应该采取什么不同的做法,您发现什么是不真正推荐的?

谢谢你, 肯尼思

最佳答案

我发现一些可能的问题。

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

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

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

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

关于c# - C# ASP.NET 中的连接字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777068/

相关文章:

c# - 这个 2 字节到 int 的转换有什么问题?

c# - 将 ListViewColumn 宽度设置为最宽的项目,无论它是否在初始渲染中?

SQL 更新查询

asp.net - 为什么要使用第三方 DI 容器而不是内置 ASP.NET Core DI 容器?

sql-server - cte递归部分仅返回一行

sql-server - MDX DRILLTHROUGH 失败但选择可以成功执行

c# - Windows窗体中的异步执行

c# - 如何从 SOS 的 jitted 输出中获取托管函数名称?

asp.net - 如何通过SSRS公式字段中的两个日期计算天数

asp.net - 从母版页调用 Html.RenderPartial