2011-08-21 26 views
1

認証ロジックを持つログインフォームがあります。私はこのコード行に「メソッドまたは操作が実装されていません」ログイン名とパスワードを入力し、その後、私は、「ログイン」をクリックして、エラーを取得:FBA認証およびセキュリティトークンエラー

SecurityToken tk = SPSecurityContext.SecurityTokenForFormsAuthentication 
    (
    new Uri(SPContext.Current.Web.Url), 
    "MyUserProvider", 
    "MyRoleProvider", 
    this.txLogin.Text, 
    this.txPassword.Text 
); 

============== =================

Server Error in '/' Application. 

The method or operation is not implemented. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ServiceModel.FaultException`1[[System.ServiceModel.ExceptionDetail, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]: The method or operation is not implemented. 

Stack Trace: 


[FaultException`1: The method or operation is not implemented.] 
    Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.ReadResponse(Message response) +1161013 
    Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.Issue(RequestSecurityToken rst, RequestSecurityTokenResponse& rstr) +73 
    Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel.Issue(RequestSecurityToken rst) +36 
    Microsoft.SharePoint.SPSecurityContext.SecurityTokenForContext(Uri context, Boolean bearerToken, SecurityToken onBehalfOf, SecurityToken actAs, SecurityToken delegateTo) +26193297 
    Microsoft.SharePoint.SPSecurityContext.SecurityTokenForFormsAuthentication(Uri context, String membershipProviderName, String roleProviderName, String username, String password) +26189452 
    Microsoft.SharePoint.IdentityModel.Pages.FormsSignInPage.GetSecurityToken(Login formsSignInControl) +188 
    Microsoft.SharePoint.IdentityModel.Pages.FormsSignInPage.AuthenticateEventHandler(Object sender, AuthenticateEventArgs formAuthenticateEvent) +123 
    System.Web.UI.WebControls.Login.AttemptLogin() +152 

しかし、カスタムメンバーシップとロールプロバイダとすべてのメソッドが実装されています!間違いはどこですか?しようとする

答えて

1

のようにあなたは、カスタムメンバーシップとロールプロバイダから直接、基本メンバーシップ関数を呼び出すことがあります。これらは、あなたのメンバーシッププロバイダーではありません、既定のメンバシッププロバイダによって処理されます

Membership.FindUsersByEmail("[email protected]"); 

、 SPClaimsAuthMembershipProviderになります。 SPClaimsAuthMembershipProviderは多くの基本メソッドを実装していません。実装されていない例外を返します。あなたが参照するために、Webアプリケーションの選択メンバーシッププロバイダーを取得したい場合は

は、次のコードを使用することができます。

public static string GetMembershipProvider(SPSite site) 
{ 
    // get membership provider of whichever zone in the web app is fba enabled 
    SPIisSettings settings = GetFBAIisSettings(site); 
    return settings.FormsClaimsAuthenticationProvider.MembershipProvider; 
} 

public static SPIisSettings GetFBAIisSettings(SPSite site) 
{ 
    SPIisSettings settings = null; 

    // try and get FBA IIS settings from current site zone 
    try 
    { 
     settings = site.WebApplication.IisSettings[site.Zone]; 
     if (settings.AuthenticationMode == AuthenticationMode.Forms) 
      return settings; 
    } 
    catch 
    { 
     // expecting errors here so do nothing     
    } 

    // check each zone type for an FBA enabled IIS site 
    foreach (SPUrlZone zone in Enum.GetValues(typeof(SPUrlZone))) 
    { 
     try 
     { 
      settings = site.WebApplication.IisSettings[(SPUrlZone)zone]; 
      if (settings.AuthenticationMode == AuthenticationMode.Forms) 
       return settings; 
     } 
     catch 
     { 
      // expecting errors here so do nothing     
     } 
    } 

    // return null if FBA not enabled 
    return null; 
} 
+0

感謝!それは良い作品 – NieAR

0

いくつかの点:あなたはCental管理を通じてWebアプリケーションのプロバイダを

+0

1)はい2)はい3)同じエラー – NieAR

関連する問題