发布后才会出现错误:“无法连接到任何指定的MySQL主机。”

时间:2012-03-01 00:08:29

标签: c# asp.net mysql html

在开发过程中程序运行正常,但一旦发布,我注意到我的元素没有正确填充。我一开始认为这是更新面板的一个问题,但是有人告诉我使用Firebug,这是我看到被抛出的错误。

再次: “无法连接到任何指定的MySQL主机。”

我的代码(这部分来自web.config):

    <connectionStrings>
    <add name="MySQLConnection"    connectionString="[myServer];[myDatabase];UID= [myID];PWD=[myPassword];"
    providerName="MySql.Data.SqlClient" />
    </connectionStrings>

在C#中,我这样调用连接字符串:

    string connstring = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["MySQLConnection"].ConnectionString;
    MySqlConnection myConnection = new MySqlConnection(connstring);

任何关于为什么不起作用,或者为什么它在开发中工作而不是一旦发布的输入,将不胜感激。

感谢。

编辑:新信息

天啊,这太令人发狂了。

所以我的程序有第二个web.config文件,我之前在那个连接字符串中放入了不正确的数据。当程序运行时它正在尝试使用它,这就是它无法正常工作的原因。或者我想。

我认为这是在认为它是同一个文件之后,并且只是尝试更新它。最后我从旧文件中删除了连接字符串,你知道什么,我现在知道它正在使用正确的连接字符串。

对我来说,对吧?不。

我现在知道它正在使用正确的连接字符串,但它仍然在某种程度上不起作用。

话虽如此,我添加了一些更好的故障排除,所以现在我有了这个:

    MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the             specified MySQL hosts. ---> System.Security.SecurityException: Request for the permission             of type 'System.Net.SocketPermission, System, Version=4.0.0.0, Culture=neutral,             PublicKeyToken=b77a5c561934e089' failed.
    at System.Security.CodeAccessSecurityEngine.Check(Obj ect demand, StackCrawlMark&             stackMark, Boolean isPermSet)
    at System.Security.CodeAccessSecurityEngine.Check(Cod eAccessPermission cap,             StackCrawlMark& stackMark)
    at System.Security.CodeAccessPermission.Demand()
    at System.Net.Sockets.Socket.CheckCacheRemote(EndPoin t& remoteEP, Boolean         isOverwrite)
    at System.Net.Sockets.Socket.BeginConnectEx(EndPoint remoteEP, Boolean flowContext,             AsyncCallback callback, Object state)
    at System.Net.Sockets.Socket.BeginConnect(EndPoint remoteEP, AsyncCallback         callback,     Object state)
    at MySql.Data.Common.StreamCreator.CreateSocketStream (IPAddress ip, Boolean unix)
    at MySql.Data.Common.StreamCreator.GetStream(UInt32 timeout)
    at MySql.Data.MySqlClient.NativeDriver.Open()
    The action that failed was:
    Demand
    The type of the first permission that failed was:
    System.Net.SocketPermission
    The Zone of the assembly that failed was:
    MyComputer
    at MySql.Data.MySqlClient.NativeDriver.Open()
    at MySql.Data.MySqlClient.Driver.Create(MySqlConnecti onStringBuilder settings)
    at MySql.Data.MySqlClient.MySqlPool.GetPooledConnecti on()
    at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
    at MySql.Data.MySqlClient.MySqlPool.GetConnection()
    at MySql.Data.MySqlClient.MySqlConnection.Open()
    at WordsOfPower.testing.update_words() in C:\Users\AJ\documents\visual studio         2010\Projects\WordsOfPower\WordsOfPower\WordsOfPow er.aspx.cs:line 39

最终编辑:我更新了我的web.config以使用完全信任。

http://support.winhost.com/KB/a657/changing-the-default-aspnet-trust-level.aspx

2 个答案:

答案 0 :(得分:1)

确保web.config文件中的连接字符串正确

<add name="STRING_CONNECTION" connectionString="Server=[SERVER];Database=[DATA BASE NAME];Uid=[USER];Pwd=[PASSWORD];" providerName="MySql.Data.MySqlClient"/>

答案 1 :(得分:0)