2010-04-07 91 views
0

我想配置AspNetMembershipProvider用於在我的WCF服務使用basicHttpBinding進行身份驗證。我有以下配置:AspNetMembership提供與WCF服務

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    <bindings> 
    <basicHttpBinding> 
     <binding name="basicSecureBinding"> 
     <security mode="Message"></security> 
     </binding> 
    </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors>  
     <behavior name="MyApp.Services.ComputersServiceBehavior"> 
      <serviceAuthorization roleProviderName="AspNetSqlRoleProvider" principalPermissionMode="UseAspNetRoles" /> 
      <serviceCredentials> 
      <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="AspNetSqlMembershipProvider"/> 
      </serviceCredentials> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 

     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="MyApp.Services.ComputersServiceBehavior" name="MyApp.Services.ComputersService"> 
      <endpoint binding="basicHttpBinding" contract="MyApp.Services.IComputersService" /> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
</system.serviceModel> 

角色已啓用且成員資格提供程序已配置(其工作於Web站點)。

但是驗證過程根本沒有被觸發。沒有卡列斯數據庫請求過程中,當我嘗試設置以下屬性的方法:

[PrincipalPermission(SecurityAction.Demand, Authenticated = true)] 
public bool Test() 
{ 
    return true; 
} 

我收到拒絕訪問異常。任何想法如何解決它?

+0

您如何設置身份驗證的憑據? – Tanner 2010-04-07 08:39:35

+1

var serviceClient = new ComputersServiceClient(); serviceClient.ClientCredentials.UserName.UserName =「[email protected]」; serviceClient.ClientCredentials.UserName.Password =「administrator」; bool test = serviceClient.Test(); – Sly 2010-04-07 08:44:56

回答

3

試試這個CodePlex Security Guide中,密技和有詳細的安裝和配置,引導了許多配置選項,可以幫助你找到失蹤的一塊拼圖你的應用場景。