2012-03-01 18 views
2

開発中にプログラムはうまく動作しますが、一度公開されると、私の要素が正しく配置されていないことに気付きました。最初はアップデートパネルの問題だと思っていましたが、誰かがFirebugを使用するようにと言っていましたが、これは私が投げられているエラーです。エラーは公開後にのみ発生します:「指定されたMySQLホストに接続できません。

再度: "指定された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); 
なぜこの上の任意の入力が機能していない

、またはなぜそれが開発で一度公開されていない作品は、大いに感謝します。

ありがとうございました。

EDIT:新情報

神私のああ、これは腹立たしいです。

私のプログラムには2番目のweb.configファイルがあり、以前は誤ったデータを含む接続文字列を使用していました。プログラムが実行されたときに、それが何をしようとしていたのか、それがなぜ機能していないのかです。それとも私は思った。

私はこれが同じファイルであると考えた後、これを見つけ出し、単にそれを更新しようとしました。最後に古いファイルから接続文字列を削除しましたが、あなたはそれが正しい接続文字列を使用していることを知っています。

私のためにHoo-ray、そうですか?いいえ。

これで正しい接続文字列が使用されていることがわかりましたが、まだ動作していません。言われていること

、私は今、私はこれ持って、中にいくつかのより良いトラブルシューティングを追加しました:

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

+0

多くのことを確認してください。まず、プロダクションとデベロッパーで接続文字列が同じになるはずですか?実稼働サーバーは実際にmysqlボックスを見ることができますか? – NotMe

+0

ちょうど指定する:私の "生産"システムは私がwinhostで購入したwebspaceで、私の "Dev"環境は私のパーソナルコンピュータ上のVisual Web Studio 2010です。 私は同じデータベースに接続していると言われているので、なぜ接続文字列を変更する必要があるのか​​分かりません。 私は少しポートを追加することを実験しましたが、それはちょうど問題を引き起こしました。 –

+0

エラーは、単にWebサーバーがデータベースサーバーを見つけることができないことを意味します。これにはたくさんの理由があります。たとえば、DBサーバーがホストからのアクセスを許可しないファイアウォールの内側にある可能性があります。 – NotMe

答えて

1

web.configファイル内の接続文字列は、信頼問題であること

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

私はそれを二重にチェックしました。まだ見て、私は何かを考え出したかもしれないと思う。 –

+0

+1:これはOPが持っていた最初の問題だったので。 – NotMe

関連する問題