私たちは、マルチテナントのSilverlightアプリケーションを作成しています。ユーザーはWindowsフォーム認証を使用してログインし、そのユーザーの接続文字列をテーブルから取得します。文字列の形式は次のとおりです。「Application Name = application」が接続文字列にある場合、このデータベース接続が失敗するのはなぜですか?
Data Source=1.2.3.4; Initial Catalog=database; Persist Security Info=True; User ID=######; Password=##########
これは正常です。
Data Source=1.2.3.4; Initial Catalog=database; Application Name=application; Persist Security Info=True; User ID=######; Password=##########
しかし、今の接続が行われていませんので、我々は取得しているエラー:私たちは、その後の理由outlined hereのために、アプリケーション名を設定すると良いでしょうことを決めました。これは、展開されたサイトでのみ失敗しています。 Visual Studioを介した実行は明らかに影響を受けません。接続を行うコードは変更されていません。私は変化があるはずだと信じたいと思っていますが、私は彼らが何をすべきかを考え出すことができませんでした。
接続は次のように作成されている:データベースから読み取るよう
public class OurDataContext : DataContext
{
public OurDataContext()
: base(SessionCache.OurConnectionString)
{
....
}
}
SessionCache.OurConnectionString
は文字列です。
UPDATEは
接続文字列に変化が赤ニシンであってもよいです。 1つのWebサーバー(私が直接アクセスすることはできません)でこの障害が発生します。別のWebサーバー(つまり、doにアクセスできる)で参照されているデータベースにプロパティを追加しても、問題は再現されません。これは私がエラーがどこか他の場所にあるという結論に導いています。しかし、私はまだこれを解決することにはほど遠いです。
実際のエラーは例外です:
- システム:私はこの上で、今日やった
An exception of type 'System.ServiceModel.DomainServices.Client.DomainOperationException' occurred and was caught. ------------------------------------------------------------------------------------------------------------------ 01/31/2012 14:18:53 Type : System.ServiceModel.DomainServices.Client.DomainOperationException, System.ServiceModel.DomainServices.Client, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 Message : Load operation failed for query 'GetUserSecurityConfig'. The remote server returned an error: NotFound. Status : ServerError ErrorCode : 0 Data : System.Collections.ListDictionaryInternal Stack Trace : The stack trace is unavailable.
すべての研究はがが変更されていないことを、いくつかのかなり基本的な事柄を返します。 ComponentModel.DataAnnotations、System.ServiceModel.DomainServices.EntityFramework、System.ServiceModel.DomainServices.HostingおよびSystem.ServiceModel.DomainServices.Serverが\ binディレクトリにコピーされていません。私はチェックして、彼らはあります。
- データベースサーバーに接続中にエラーが発生しました。私はしませんこれは、フォーム認証として動作すると思います。サーバー上の別のデータベースですが、資格情報は同じです。
私はSQLサーバのエキスパートではありませんが、「永続セキュリティ情報」の部分を削除して、それが役立つかどうかを確認します。別のポイント:「アプリケーション」にスペースや類似物が含まれていませんか? – Yahia
@Yahia - 「アプリケーション」にはスペースを入れないでください。 「セキュリティ情報を保持する」は、ユーザー名とパスワードを取得するために必要です。[ソース](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx) – ChrisF
デプロイされたデータベースの "アプリケーション"を構成しましたか? –