0

ASP.NET MVC 4 を使用しています。ログインと登録用に、自分のデータベースと既定のデータベースの 2 つのデータベースを使用しています。

すべてが素晴らしく、自分のメンバーシップを作成しようとするまで、ストアド プロシージャを呼び出すことができました。つまり、Web セキュリティをカスタマイズしようとしました。私は本当にそのことについて何も知りません。今は間違った言葉を使っているかもしれません。ただし、ここでの質問にあるように、クラスにいくつかの変更を加えました。次に、アプリケーションを実行すると、例外が発生し、それが難しいことがわかったので、変更するすべてのクラスに対して (ctrl + z) を作成します。次に実行すると、この例外が発生しました

ストアド プロシージャ 'dbo.ApartmentOwnerLogin' が見つかりませんでした。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Data.SqlClient.SqlException: ストアド プロシージャ 'dbo.ApartmentOwnerLogin' が見つかりませんでした。

ソース エラー:

395行目: new ObjectParameter("password", typeof(string));
396行目:
397行目: return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("ApartmentOwnerLogin", usernameParameter, passwordParameter, iD);
398行目: }

行ったすべての変更を本当に元に戻しました (元に戻しました)

職場復帰にお役立てください。

私を助けてください、私はしなければならないことをほぼすべて終えましたが、今日、プロジェクトを提出する前に、この例外が発生しました

4

1 に答える 1

1

A) 独自のメンバーシップを作成している場合は、おそらくログインにストアド プロシージャは必要ありません。ユーザー名でユーザーを返し、コードでパスワードを確認するだけです。

B) そのルートをたどっている場合に SP を確認するには、次の手順を実行します。

  1. SP が EDMX 内に存在することを確認します。これは、モデル ブラウザーを介して行います。
  2. SSMS を介して、データベース サーバーに SP が存在することを確認します。
  3. 適切なパラメーターを使用して、SSMS で自分として SP を実行できることを確認します
  4. Web サイトがデータベースに接続しているユーザー (SQL ログインの可能性が高い) が、データベースに接続でき、ストアド プロシージャに対する実行権限を持っていることを確認します。

(4 は実際には 1 のプリカーソルである可能性があります!)

チェックする順序は、実際には 2,3,4,1 である必要があります

2 での失敗。DB サーバーに存在しない場合は...作成します。4 での失敗。接続文字列のユーザーが DB サーバーのログインとして存在し、データベースのログインとして存在し、その SP に対する実行権限を持っていることを確認します。1 での失敗。VS で「データベースからモデルを更新」に移動し、sp を見つけて追加します

于 2013-11-09T08:50:13.467 に答える