開発マシン(Windows 7 Ultimate、IIS 7.5、およびVisual Studio 2010 Pro)でasp.netアプリケーションを実行しています。また、SQL Server 2008 R2がインストールされており、もちろんVS2010ProとともにインストールされたSQLServerExpress2008もあります。
ASP.NET構成ウィザードを実行し、アプリ用に数人のユーザーとロールを作成しました。その結果、ASPNETDB.MDFデータベースファイルがApp_Dataフォルダーに作成されました。
私が今直面している問題は、上記のSQL Server Expressデータベースの接続文字列が、メンバーシップの要素と同様に、アプリケーションのweb.configにないことです。
しかし、私のアプリケーションは正常に実行されています。ログイン、ログアウトなどができます。ロールも期待どおりに動作しています。
(また、アプリケーションがローカルマシン上のSQL Server 2008 R2上のデータベースにもアクセスし、運用サーバーでも同じことができることを指摘したいと思います。)
アプリケーションを本番サーバーにアップロードし、そこでメンバーシップデータベース(SQL Server 2008)を作成し、データを転送しました。次に、そのSQLServerデータベースの接続文字列をweb.configファイルに追加しました。ただし、ログインしようとするとSQLServerに接続できません。エラーは次のとおりです。SQLServerへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。(プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)
説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとそれがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。
例外の詳細:System.Data.SqlClient.SqlException:SQLServerへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。(プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)。
(よくわかりませんが)アプリケーションがリモートホスト上のSQLServerExpressにアクセスしようとしていると思います。これは、接続文字列がどこかに埋め込まれているためです。
私が自分自身を明確にした場合、私の質問は次のとおりです。接続文字列を構成する方法またはそれを見つける場所は?web.configにはないからです。
ASP.NETとSQLServerは初めてです。どんな助けでも大歓迎です。ありがとう。
これがweb.configです
<configuration>
<connectionStrings>
<add name="somename" connectionString="Data Source=remotehost;Initial Catalog=remotedb;User Id=username;Password=password"providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<customErrors mode="Off"></customErrors>
<roleManager enabled="true" />
<authentication mode="Forms" />
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
</configuration>
私のweb.configはこれですべてです。
上記の接続文字列は、リモートサーバー用に私が追加したものです。