2014-02-12 195 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

最终,它被发现是服务器端问题。帮助台修复了它。我还不知道他们究竟确定了什么。只要我听到他们的消息,我会尽快将其发布在这里。

感谢你们所有人的贡献。

相关问题