2012-01-30 1 views
9

私たちは、マルチテナントの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ディレクトリにコピーされていません。私はチェックして、彼らはあります。

  • データベースサーバーに接続中にエラーが発生しました。私はしませんこれは、フォーム認証として動作すると思います。サーバー上の別のデータベースですが、資格情報は同じです。
+0

私はSQLサーバのエキスパートではありませんが、「永続セキュリティ情報」の部分を削除して、それが役立つかどうかを確認します。別のポイント:「アプリケーション」にスペースや類似物が含まれていませんか? – Yahia

+0

@Yahia - 「アプリケーション」にはスペースを入れないでください。 「セキュリティ情報を保持する」は、ユーザー名とパスワードを取得するために必要です。[ソース](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx) – ChrisF

+0

デプロイされたデータベースの "アプリケーション"を構成しましたか? –

答えて

1

問題は、サーバーにRIAサービスのバージョンがインストールされていることが原因であることが判明しました。

私たちは最近、NuGetパッケージマネージャー経由でRIAサービスを組み込むようにプロジェクトを変更しました。このサーバーには既にVS2010用RIAサービスがインストールされています。私たちがそれを整理すると、すべてが生き返りました。

なぜこの問題が顕著に現れたのかはっきりしません。

0

このエラーは、1つのWebサーバー(私は直接アクセスできない)でのみ発生します。別のWebサーバーが参照しているデータベースにアクセス権を持っているプロパティを追加しても問題は再現されません。

ウェブサーバーの設定をチェックし、データベースが正しくインストールされていることを確認してください。

は、webserver config/db installionのようです。

+0

これも私たちがやっている結論です。しかし、まだ何も起きていない。 – ChrisF

+0

@ChrisFユーザーが接続しているデータベースとスキーマ、およびSQL Serverのユーザーマッピングを確認してください(作業中のWebサーバーと比較してください)。 GetUserSecurityConfigを持たないデータベースに接続が確立されているようです。 'Initial Catalog = schema.database'を試して、接続先を確認してください。 – PhilW

関連する問題