部署到IIS 7生产Web服务器时,无法使身份验证正常工作。我正在使用内存中身份验证,当我从Visual Studio本地运行时,一切都可以正常运行。但是,当我尝试使用ServiceStack客户端从WPF应用程序连接到生产Web服务器时,出现了以下错误:
我已经尝试过在IIS中进行多种身份验证配置,包括启用/禁用表单身份验证,Windows身份验证和基本身份验证,但都无济于事。
global.asax
:
public override void Configure(Funq.Container container)
{
RegisterPlugins();
RegisterValidators(container);
RegisterCaches(container);
RegisterSessionFactories(container);
RegisterRepositories(container);
RegisterUsers(container);
}
private void RegisterPlugins()
{
Plugins.Add(new AuthFeature(() => new AuthUserSession(),new IAuthProvider[] { new BasicAuthProvider()}));
}
private void RegisterUsers(Funq.Container container)
{
var userRepository = new InMemoryAuthRepository();
container.Register<IUserAuthRepository>(userRepository);
string hash;
string salt;
new SaltedHash().GetHashAndSaltString("xxxxxxxx", out hash, out salt);
userRepository.CreateUserAuth(new UserAuth
{
Id = 1,
DisplayName = "xxx xxxxxx",
Email = "[email protected]",
UserName = ""xxxxxxxx,
FirstName = "xxxx",
LastName = "xxxx",
PasswordHash = hash,
Salt = salt,
Roles = new List<string> { RoleNames.Admin },
}, "xxxxxxxx");
}
我的客户:
public UserEntity GetUserFromDomainUsername(string domainUsername)
{
try
{
using (var client = new StormJsonServiceClient(WebServiceUrl){UserName = "xxxxxxx", Password = "xxxxxxxx"})
{
var response = client.Send(new UserFromDomainUsernameQuery { DomainUsername = domainUsername });
return response.User;
}
}
catch (Exception exception)
{
var ex = exception as WebServiceException;
if (ex != null)
{
throw new VqsWebServiceException(GetWebServiceErrorMessage(ex));
}
throw;
}
}
IIS身份验证与ServiceStack身份验证无关,如果不需要,请将其关闭。
如果启用了IIS身份验证,它将在ServiceStack应用程序顶部有效运行。因此,它将在对您的ServiceStack服务的所有请求之前运行,最终您必须首先满足此安全性条件。如果这通过了您的请求,则将转到ServiceStack应用程序。
大多数在ServiceStack中实现身份验证的人都不需要IIS也可以实现身份验证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句