私はWeb開発の新人であり、経験豊富な人がこれを解決するのに役立つことを願っています。MySQLのアップグレードに待ち伏せされました。
背景: 私は2台のXP PCを持っています(野心的にそれらを「Webサーバー」と「MySQLサーバー」と呼びましょう)。私は最近、MySQLデータベースからデータを取得するasp.netサイトを構築し、正常にホストしました。これは、少数のローカルユーザー向けに設計されたサイトであるため、データを取得するためにSQLを学習する必要はありません...特別なことは何もありません。ここまでは順調ですね。
問題: 今週、MySQLを「Webサーバー」にインストールしましたが、それがおかしくなったときです。その時点まで、Webサーバー上にMySQLのインスタンスはありませんでした。インストール以来、私は:
- ...MySQL.NETプロバイダーを再インストールしました
- ...machine.configファイルを再構成しました
- ...MySQL_Web.dllをMySQLbinディレクトリにコピーしました
- ...以下のサイトの指示に合わせてセットアップを取得しようとしました。
http://dev.mysql.com/doc/refman/5.0/en/connector-net-tutorials-asp-roles.html
これにより多くの問題が解決され、サイトを部分的に稼働させました。ランディングページにアクセスでき、ゲストユーザーへのクエリはデータを正常に返しています。
エラーメッセージ#1 ただし、ユーザーがログインしてサイトのプライベートページにアクセスしようとすると、「ユーザー'' @'localhost'のアクセスが拒否されました(パスワード:NOを使用)」というエラーが表示されます。パスワードを使用しているため、またローカルホスト/ Webサーバーを指す接続文字列がないため、これは明らかに間違っています。唯一の接続文字列は、データベースが存在するMySQLサーバーを指します。
エラーメッセージ#2 [セキュリティ]タブのasp.netWebサイト管理ツールも確認しており、次のエラーが表示されます。
「選択したデータストアに問題があります。これは、サーバー名または資格情報が無効であるか、権限が不十分であることが原因である可能性があります。また、ロールマネージャー機能が有効になっていないことが原因である可能性があります。下のボタンをクリックしてリダイレクトしてください新しいデータストアを選択できるページ。次のメッセージは、問題の診断に役立つ場合があります。例外が発生しました。イベントログを確認してください。」
ロールマネージャーは確実に有効になっており、プロバイダーは正しく設定されています。
WebサーバーでMySQLをアンインストールし、サイトのユーザーテーブルを再作成し、特権をフラッシュし、その他のいくつかのトリックを試しましたが、ログインプロセス中およびWebサーバーの検索中に、サイトが接続文字列のデータベースを永続的にバイパスしているようです。代わりは。
誰かが私がこれを次に取ることができるアイデアを持っていますか?私は数日間困惑していて、他に何ができるかわかりません。
編集:以下のコメントで尋ねられたように関連するコードを提供します。前述のように、これはすべてデフォルトプロジェクトの一部として生成された標準コードであり、編集されていません(もちろん、web.configを除く)。
Web.config
<connectionStrings>
<remove name="MySQLWebConnection"/>
<add name="MySQLWebConnection" connectionString="server=myWebServer;User Id=myName;password=myPwd;database=myDB" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
<system.web>
<membership defaultProvider="MySQLMembershipProvider" />
<roleManager enabled="true" defaultProvider="MySQLRoleProvider" />
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="~/Account/Login.aspx" defaultUrl="~/Default.aspx" />
</authentication>
...
</system.web>
Login.aspx
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
<LayoutTemplate>
<span class="failureNotification">
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</span>
<asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"
ValidationGroup="LoginUserValidationGroup"/>
<div class="accountInfo">
<fieldset class="login">
<legend>Account Information</legend>
<p>
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
<asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p>
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
<asp:TextBox ID="Password" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p>
<asp:CheckBox ID="RememberMe" runat="server" Visible="false" />
<asp:Label ID="RememberMeLabel" runat="server" Visible="false" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
</p>
</fieldset>
<p class="submitButton">
<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
</p>
</div>
</LayoutTemplate>
</asp:Login>