2016-04-22 5 views
0

私は2つのASP.NETアプリケーションを持っています。 1はVBにあり、1はC#にあります。デバッグを停止すると実際にはどうなりますか?

VBアプリケーションの特定の資格情報を持つユーザーログインは、C#アプリケーションにリルートする必要があります。同様に、C#アプリの特定の資格情報はVBアプリにリルートされ、その逆も同様です。

VB - > C#が動作します。この機能は第三者によって作成されました。 (C#アプリケーションは本質的に私たちのVBアプリケーションを書き直すだけですが、もっと現代的ですが、パッケージ全体が書き換えられていません)。

私は、C#アプリがトークンを作成するためにDB内のストアドプロシージャを呼び出すように、そのトークンを取得するためのプロシージャを呼び出すVBアプリケーションにブラウザをリダイレクトするようにコードを逆転しようとしました。 。

私は正しく動作していません。大きな問題の1つは、ブラウザがC#ログインページからVBページに移動しないことです。しかし、ProfilerをDB上で実行すると、「ロードトークン」ストアドプロシージャが呼び出されていることがわかります。つまり、コードですが、ブラウザは正しくリダイレ​​クトされていません。

さらに重要なのは、この質問を投稿している理由は、アプリのデバッグをやめたときに実際に何が起こっているのか分かりません。私はDBのトークンを作成する呼び出しの直後にブレークポイントを設定します。だから私は自分のアプリケーションを実行し、ログインし、ブレークポイントをトリガし、私はDBの良いデータを見ることができます。デバッグを直ちに停止すると、ロードトークンプロシージャはまだになります。どうやって!?

ここにコードがあります。私LoginController

URLからキーを解析し、別のDB SPにパラメータとして ことを渡すVBアプリケーションでランディングページにポイントをリダイレクト
public ActionResult ValidateUser(objLogin) 
{ 
    var ds = LoginData.ValidateUser(objLogin); 

    string url = "someUrl/" + ds.Tables["Key"].Rows[0][0].ToString(); 

    System.Web.HttpContext.Current.Response.Redirect(url, true); 

    return Json(objLogin, JsonRequestBehavior.AllowGet); 
} 

...しかし、デバッグを止めても、しなくても、ブラウザは決してログインページから移動しません。

率直に言えば、returnの文が何をしているのか完全にわかりません。私がそれに踏み込もうとすると、ちょうど私が「プレイ」に当たったかのように続きます。アプリケーションは、ログインページで制御を再開し、寒いです。それはサードパーティの書き換えの一部です。 VBのアプリは非常に古い、かなり構造化されていない。新しいC#rewriteはMVCを使用します。私は原則に精通していますが、私はその専門家ではありません。特に.NETではそうではありません。

そしてLoginData

public DataSet ValidateUser(Login objLogin) 
{ 
    DataSet dsData; 

    using (SqlCommand sqlCommand = new SqlCommand("Validate_User_Main") 
    { 
     // execute this procedure; assign results to dsData 
    } 

    string authKey = GetAuthKey(dsData.userId); 

    DataTable dtTemp = new DataTable("key"); //putting break point here after the key gets created but before the redirect is called in LoginController.ValidateUser 
    dtTemp.Columns.Add("Key"); 

    DataDrow drTemp = dtTemp.NewRow(); 
    drTemp[0] = authkey; 

    dtTemp.Rows.Add(drTemp); 

    dsData.Tables.Add(dtTemp); 
    return dsData; 
} 

での編集:まだ私のブレークポイントで待っている間、私は私のブラウザウィンドウを閉じた場合は、「ロードトークン」コールが利用されていないことをデバッグを停止。単にデバッグを停止してブラウザを開いたままにしておくと、呼び出されます。だから、それは "舞台裏で"リダイレクトする必要がありますよね?私は理解していません...

+0

これは、あなたのフローを表示している裸のボーンコードと、このブレークポイント。 – Becuzz

+0

@Becuzz申し訳ありません。コードを追加しました。 – sab669

答えて

1

デバッガを停止すると、デバッガは切り離されます。これは単に実行中のコードの追跡を停止することを意味します。あなたが見たように、コードは実行し続けますが、ブレークポイントや変数などを設定することはできません。

+0

私は参照してください。私は実際にそれが完全にプロセスを殺したと思っています。デバッグをやめると、IEを閉じて他のブラウザを閉じることができないように思えるのはいつものことです。 – sab669

関連する問題