開発中にプログラムはうまく動作しますが、一度公開されると、私の要素が正しく配置されていないことに気付きました。最初はアップデートパネルの問題だと思っていましたが、誰かが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
多くのことを確認してください。まず、プロダクションとデベロッパーで接続文字列が同じになるはずですか?実稼働サーバーは実際にmysqlボックスを見ることができますか? – NotMe
ちょうど指定する:私の "生産"システムは私がwinhostで購入したwebspaceで、私の "Dev"環境は私のパーソナルコンピュータ上のVisual Web Studio 2010です。 私は同じデータベースに接続していると言われているので、なぜ接続文字列を変更する必要があるのか分かりません。 私は少しポートを追加することを実験しましたが、それはちょうど問題を引き起こしました。 –
エラーは、単にWebサーバーがデータベースサーバーを見つけることができないことを意味します。これにはたくさんの理由があります。たとえば、DBサーバーがホストからのアクセスを許可しないファイアウォールの内側にある可能性があります。 – NotMe