2014-02-12 243 views
0

我有一個有趣的問題。我的一個與數據庫相關的代碼在本地機器上工作良好。但是它不會在第三方Web服務器上發佈任何內容。vb.net代碼在本地但不在Web服務器上工作

以下是代碼片段:

Public Function getUserAuthDataWithUserId(ByRef Connection As MySqlConnection, 
               ByVal UserId As String 
              ) As DataTable 

    Dim cmd As String 
    cmd = "select * from tbl_md_userauth where tf_userid = '" + UserId + "' " 
    getUserAuthDataWithUserId = ExecuteSQL(Connection, cmd) 
End Function 

而且ExecuteSQL功能是:

Public Function ExecuteSQL(ByRef Connection As MySqlConnection, 
           ByVal SQLStatement As String 
           ) As DataTable 
    Dim ds As New DataSet 
    Dim da As New MySqlDataAdapter 

    Try 
     da = New MySqlDataAdapter(SQLStatement, Connection) 
     da.Fill(ds, "tbl_Return") 
     ExecuteSQL = ds.Tables("tbl_Return") 

    Catch ex As Exception 
     msgbox ("exception !") 
    End Try 
End Function 

可以放心:

  1. 數據庫表有正確的數據。從本地機器連接到遠程桌面時,代碼正常工作。
  2. 使用本地IIS和本地數據庫時,代碼可以正常工作。
  3. 我也嘗試重新發布代碼兩次或三次。

Web服務器的幫助臺表示他們的服務器沒有問題。

任何線索有什麼不對?

+0

發佈到Web服務器時是否更改了連接字符串?它可能與您本地機器上的不一樣。 – ekad

+2

您是否收到異常?你的catch塊返回什麼? – Jason

+0

檢查您是否按預期獲取了userId。你使用匿名認證? – NoviceProgrammer

回答

1

看來你正在吞嚥你的例外。該代碼似乎使用msgbox顯示錯誤,但該錯誤將顯示在服務器下的隱藏配置文件中,不會發送到瀏覽器進行顯示。您需要其他方式顯示或記錄在Web環境中工作的錯誤。

這就是說,你能夠得到任何連接到數據庫,只是這種方法失敗,或者是所有的數據庫請求失敗?我懷疑您在數據庫配置中使用集成身份驗證,但同一用戶無法在服務器上工作,因爲IIS以應用程序池中的其他用戶身份運行。嘗試更改開發環境以指向服務器上的數據庫,然後查看是否以這種方式獲取任何錯誤。如果您使用的是宿主環境,我建議在您的數據庫中設置一個指定用戶,並在連接字符串中使用該用戶,而不是使用集成身份驗證。

+0

乾杯吉姆。 1.我用msgbox()只是在這裏發佈問題。這不是我真正的代碼。 2.我使用連接字符串(而不是集成身份驗證) 3.是的,我嘗試通過將數據庫指向遠程服務器從本地機器運行代碼。它運作良好。 – Sukhi

+0

在連接字符串中,您是否指定了用戶名?你是否從你的catch塊收到任何錯誤?您可能還想檢查一下,看看是否有錯誤導致打開連接。 –

0

最終,它被發現是服務器端問題。幫助臺修復了它。我還不知道他們究竟確定了什麼。只要我聽到他們的消息,我會盡快將其發佈在這裏。

感謝你們所有人的貢獻。

相關問題