Я уже несколько дней борюсь с этим - я не могу правильно настроить эту службу WCF для использования пользовательского поставщика членства. Когда я запустим тестовый клиент, я получаю эту ошибку:Конфигурация WCF - Пользовательская аутентификация на хосте
The username/password Membership provider MidlandsCoop.MembersWcfService.Business.UserAuthentication specified in the configuration is invalid. No such provider was found registered under system.web/membership/providers.
Я после этой MSDN link не увенчались успехом. Может ли кто-нибудь сказать мне, где я ошибаюсь?
Вот мой web.config:
<?xml version="1.0"?> <configuration> <connectionStrings> <add name="MyCS" connectionString="Data Source=my server;Initial Catalog=MyDB;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="wsHttpBinding"> <security> <message clientCredentialType="UserName" /> </security> </binding> </wsHttpBinding> </bindings> <services> <service name="MidlandsCoop.MembersWcfService.MembersService" behaviorConfiguration="Service_Behaviour"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="" name="basicHttpBinding" contract="MidlandsCoop.MembersWcfService.IMembersService" /> <endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpBinding" name="wsHttpBinding" contract="MidlandsCoop.MembersWcfService.IMembersService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="Service_Behaviour"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="Custom" membershipProviderName="MidlandsCoop.MembersWcfService.Business.UserAuthentication" /> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> </configuration>
Мой класс аутентификации пользователя выглядит следующим образом:
public class UserAuthentication : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (null == userName || null == password)
{
throw new ArgumentNullException();
}
var db = new PetaPoco.Database("MyDB");
db.Fetch<dynamic>("SELECT Username, Password FROM MyTable WHERE [email protected] AND Password [email protected]",
userName, password);
}
}
Любые предложения будут с благодарностью.
попытаться изменить membershipProviderName = "MidlandsCoop.MembersWcfService.Business.UserAuthentication" в customUserNamePasswordValidatorType = "MidlandsCoop.MembersWcfService.Business.UserAuthentication" – vibhu
ссылку http://msdn.microsoft.com/en-us/library/ms731315. aspx упоминает атрибуты элемента. Смотрите, если вы еще этого не сделали. –
vibhu
Спасибо за ответ. Теперь я получаю эту ошибку: не удалось загрузить тип «MidlandsCoop.MembersWcfService.Business.UserAuthentication» из сборки «System.ServiceModel, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089». – Brett