1

開発マシン(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はこれですべてです。

上記の接続文字列は、リモートサーバー用に私が追加したものです。

4

1 に答える 1

1

私の質問に対する答えを見つけました。Webサイトを最初から作成している場合(私の場合)、ASPDBNET.MDFの接続文字列は通常web.configに表示されません。

アプリケーションは、machine.configファイルで定義されたマシン全体の接続文字列を使用します。これは「LocalSqlServer」という名前です。

通常、このLocalSqlServer接続文字列は、デフォルトでローカルSQLServerExpressを対象としています。

したがって、本格的なSQLServerを使用するリモートホストでは失敗します。

Webサイトをリモートサーバーにアップロードするには、通常はSQLServerである新しいサーバーを指すようにweb.configを調整する必要があります。

これを行うには、web.configファイルに新しい接続文字列を追加し、LocalSqlServerという名前を付けます。名前を除いて、データソース、初期カタログなど、通常は他のすべてを追加します。

リモートホストで機能させるには、connectionStrings要素を開く直前にclear要素を追加します。リモートSQLServerの接続文字列は次のようになります。

<connectionStrings>
    <clear/>
    <add name="LocalSqlServer" connectionString="Data Source=remotehost;Initial Catalog=remoteDB;User Id=username;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>

これで完了です。これは、最初から作成したASP.NETWebサイトに対して行ったことです。これで、メンバーシップのログイン、ログアウト、ユーザー、ロールなどが完全に機能しています。

読んでくれてありがとう。

于 2012-09-01T16:39:06.030 に答える