タイトルはおそらくほとんどの人にとって混乱を招く可能性が高いので、徹底的に説明します.
これは私が得ているエラーです:
アプリケーションが UserInteractive モードで実行されていないときにモーダル ダイアログ ボックスまたはフォームを表示することは、有効な操作ではありません。サービス アプリケーションからの通知を表示するには、ServiceNotification または DefaultDesktopOnly スタイルを指定します。
ただし、サーバー側で使用されている MsgBox の結果としてスローされることはありません。
ミックスの別のレンチ、これは現在の運用サーバーでのみ発生しています。実稼働環境と同じようにセットアップされたテスト サーバー (SSL 証明書が異なることを除いては異なりますが、それは問題ではありません) は問題なく動作しています。開発マシンもエラーなしで動作します。
VB コードビハインドで使用されている現在のコード:
Dim DBconn As New OracleConnect 'Custom class file
Try
DBconn.Open(Uname, Pword, SelServ)
If DBconn Is Nothing Then
errorLabel.Text = "Authentication did not succeed. Check user name and password."
Exit Sub
Else
groups = DBconn.GetUserRole()
'Create the ticket, and add the groups.
Dim isCookiePersistent As Boolean = chkPersist.Checked
Dim authTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _
txtUsername.Text, DateTime.Now, DateTime.Now.AddMinutes(60), isCookiePersistent, groups)
'Encrypt the ticket.
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket)
'Create a cookie, and then add the encrypted ticket to the cookie as data.
Dim authCookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
If (isCookiePersistent = True) Then
authCookie.Expires = authTicket.Expiration
End If
'Add the cookie to the outgoing cookies collection.
Response.Cookies.Add(authCookie)
'set session variables
Session("UID") = txtUsername.Text
Session("PWD") = txtPassword.Text
Session("selServ") = StrServer.SelectedValue
SetupTableNames()
'MsgBox(groups, MsgBoxStyle.OkOnly, "HRIS User Role")
Session("gsRole") = groups
'You can redirect now.
'Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUsername.Text, False))
Response.Redirect("~/Account/_Search.aspx")
End If
Catch ex As Exception
errorLabel.Text = "Error authenticating. " & ex.Message
End Try
OracleConnect クラスのコード:
Public Sub Open(ByVal Uname As String, ByVal Pword As String, ByVal SelServ As String)
OraDb = "Data Source=" + SelServ +
";Persist Security Info=True" +
";User Id=" + Uname +
";Password=" + Pword
conn = New OracleConnection(OraDb)
Try
conn.Open()
Catch ex As OracleException
Select Case ex.Number
Case 1
MesgBox("Error attempting to insert duplicate data.", MsgBoxStyle.OkOnly, "HRIS")
Case 12545
MesgBox("The database is unavailable.", MsgBoxStyle.Critical, "HRIS")
Case Else
MesgBox("Database error: " + ex.Message.ToString(), MsgBoxStyle.Critical, "HRIS")
End Select
Catch ex As Exception
MesgBox(ex.Message.ToString(), MsgBoxStyle.Information, "HRIS")
End Try
End Sub
クラスファイル内の MesgBox は認識していますが、これらは、テスト済みで正常に動作するプログラム内で動作する Javascript を使用する Sub を参照しています。
だから私の質問は:
まだ見つかっていない IIS 7.0 で、この応答サーバー側をトリガーするものはありますか?
IIS で実行できない場合、検討すべき代替手段はありますか?
編集: この問題の解決策は、ASP または VB コード内ではなく、サーバー上に設定された Oracle にあります。今後同様の問題が発生する場合は、TNS_ADMIN 環境/システム変数と TNSNAMES.ORA ファイルを調べて、それらが正しいことを確認することをお勧めします。これらの変更を行った場合は、必ずサーバーを再起動してください。私の手順では、TNSNAMES.ORAファイルが正しいことを確認し、TNS_ADMIN環境変数が設定され、次に「set tns_admin = {filepath}」を使用してcmdプロンプトで、サーバーを再起動し、サイトが完全に機能していることを確認しました。