2

認証モードが Windows の SharePoint 2010 に Web アプリがあります。フォーム ベース認証を使用する Web アプリ (ゾーン: イントラネット) を拡張しました。サンプルのC# コンソール アプリケーションを作成して、フォーム ベースのユーザーをサイトに追加すると、ユーザーが正常に追加されました。

メソッド:

    private void AddFormsBasedUserToSite(){
        try
        {
            string url = "https://appserver:36732";                
            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite site = new SPSite(url))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        string userName = "i:0#.f|aspnetsqlmembershipprovider|forms_user";
                        web.SiteUsers.Add(userName, null, null, null);
                        web.Update();                            
                    }

                }
            });                
        }
        catch (Exception e)
        {
            // Log the exception
        }          
    }

しかし、同じメソッドが WCF サービス (Windows サービスとしてホストされている) で公開されている場合、クライアントがこのメソッドを呼び出すと、ユーザーを追加できませんでした。次の例外がスローされます。

ユーザーが存在しないか、一意ではありません。

SharePoint ログは次のとおりです。

http://schemas.microsoft.com/sharepoint/2009/08/claims/userlogonnameの解決中にエラーが発生しました: メンバーシップ プロバイダー AspNetSqlMembershipProvider からの forms_user: System.Web.HttpException: SQL Server データベースに接続できません。---> System.Data.SqlClient.SqlException: SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索エラー)
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException 例外、Boolean breakConnection) で
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj)
で System.Data.SqlClient.TdsParser.Connect (ServerInfo serverInfo、SqlInternalConnectionTds connHandler、ブール値の ignoreSniOpenTimeout、Int64 timerExpire、ブール値の暗号化、ブール値の trustServerCert、ブール値の IntegratedSecurity、SqlConnection owningObject)
でSystem.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo、文字列 newPassword、Boolean ignoreSniOpenTimeout、Int64 timerExpire、SqlConnection owningObject)
で System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(文字列ホスト、文字列 newPassword、Boolean redirectedUserInstance、SqlConnection owningObject、SqlConnectionString connectionOptions 、Int64 timerStart)
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject、SqlConnectionString connectionOptions、文字列 newPassword、Boolean redirectedUserInstance)
で System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity ID、SqlConnectionString connectionOptions、オブジェクト providerInfo、文字列 newPassword、SqlConnection owningObject、
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions オプション、オブジェクト poolGroupProviderInfo、DbConnectionPool プール、DbConnection owningConnection) のBoolean redirectedUserInstance)
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection、DbConnectionPoolGroup poolGroup) の
System.Web.Management .
_
_
SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) - -- 内部例外スタック トレースの終わり ---
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password) で、Boolean trusted、文字列 connectionString)
System.Web.Management.SqlServices.SetupApplicationServices (文字列サーバー、文字列ユーザー、文字列パスワード、ブール値の信頼、文字列 connectionString、文字列データベース、文字列 dbFileName、SqlFeatures 機能、ブール値のインストール)
で System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile (文字列) System.Web.Security.SqlMembershipProvider.GetUser
(
System.Web.Security.SqlMembershipProvider.GetUser
( )文字列のユーザー名、ブール値の userIsOnline)
Microsoft.SharePoint.Utilities.SPMembershipProviderPrincipalResolver.ResolvePrincipal (文字列入力、ブール値 inputIsEmailOnly、SPPrincipalType スコープ、SPPrincipalSource ソース、SPUserCollection usersContainer)
で Microsoft.SharePoint.Administration.Claims.SPFormsClaimProvider.Resolve (SPPrincipalResolver リゾルバー、ブール値 inputIsEmailOnly、SPPrincipalSource pricipalSource、SPPrincipalType pricipalType 、文字列 resolveInput、リスト1 が解決済み)1 resolved)
at Microsoft.SharePoint.Administration.Claims.SPFormsClaimProvider.FillResolve(Uri context, Boolean allZones, String[] entityTypes, SPClaim resolveInput, List

それを理解するのを手伝ってください。

ありがとうプラカシュ

4

0 に答える 0