2

私が取り組んでいる現在のプログラムは、ショッピング カートの登録ページ用です。データを次のように記録できるようにテーブルを使用して SQL Server をセットアップしました。

  1. ユーザー名、
  2. Eメール、
  3. パスワードはすべてaに設定されていNvarchar(max)ます。

.NET Framework のバージョンは 4.5 で、私は VS 2012 を使用しており、C# でコーディングしています。サーバーはKENSULLIVAN-PC\KSSQL統合 Windows 認証を使用する SQL Server インスタンスです。

これまでのところ、情報の 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);  
    }
}

私は何を別の方法で行う必要がありますか?実際には推奨されていないことは何ですか?

ありがとう、ケネス

4

2 に答える 2

0

まず、@Adam が既に指摘したように、接続文字列に問題があります。SQl サーバーの名前付きインスタンスについては、.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 を設定する必要があります。

Web サイトを使用する各ユーザーが Windows ドメイン アカウントでログインし、ユーザーのウィンドウ ドメイン資格情報を使用してバックエンド データベースにアクセスする場合は、さらに設定が必要であり、偽装が必要であり、おそらく制約付き委任も必要です。

于 2013-04-03T01:41:21.323 に答える