web-dev-qa-db-ja.com

mssqlサーバーに接続するときにASP.NETMVCの接続文字列が正しくない

Mssqlデータベースを使用してASP.NETMVC4でWebサイトを構築し、ローカルIIS 7サーバーに展開しました。正常に動作しますが、仮想サーバーhostgatorでまったく同じことを行うと.comそれは私にこのエラーを投げます。

そして、1000の接続文字列を試しましたが、それでも成功しませんでした。

ローカルマシンとまったく同じ手順を実行したのに、サーバーに接続できないため、奇妙です。

私はこの問題に24時間取り組んでいますが、この問題の解決策を見つけることができません。

テクニカルサポートに連絡しましたが、サポート範囲外であり、これについてはサポートできないとのことでした。

ローカルマシンで同じエラーが発生したため、このエラーが消えるようにすべてを実行しましたが、適切に構成すると、仮想サーバーではそれほど機能しませんでした。

  • ファイアウォールがオフになっています
  • リモート接続はSQL構成で有効になっています
  • アプリケーションプールがネットワークサービスに設定されている
  • データベースにアクセスできる管理スタジオに新しいログインとしてネットワークサービスを追加しました

エラー

SQL Serverへの接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。 (プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)

3
skmasq

つまり、基本的に問題はweb.config内の接続文字列ではなく、エンティティフレームワークの問題でした。

ローカルホストでプロジェクトの開発を開始し、hostgator.comにサイトをデプロイし終えると、entityframeworkがすべての接続文字列を制御するため、web.configで何も変更しても意味がありませんでした。

解決策が見つかったアドレスは次のとおりです。 http://msdn.Microsoft.com/en-us/library/bb739017.aspx

解決策は次のとおりです:

    namespace Finance.Models
    {
        // This constructor is the solution
        public class FinanceDataContext : DbContext
        {
            public FinanceDataContext()
            {
                this.Database.Connection.ConnectionString = "Data Source=servername;Initial Catalog=databasename;User ID=sql_username;Password=**********";
            }

            public DbSet<Administrator> Administrators { get; set; }
            public DbSet<News> News { get; set; }
            public DbSet<User> Users { get; set; }
            public DbSet<Plan> Plans { get; set; }
            public DbSet<Withdraw> Withdraws { get; set; }
        }
    }

これに関する情報はありませんでした。運が良ければ、エンティティフレームワークでエラーが発生し、30分後に、エンティティフレームワークがデータベースへの接続を制御していることがわかりました。

私は誰かが同じ問題を抱えていると100%確信しているので、この質問を編集して誰にでも見られるようにできれば。

2
skmasq