部署到IIS 7时,ServiceStack身份验证的问题



我在部署到我的IIS 7 Production Web服务器时会遇到确保工作的问题。我正在使用内存身份验证,当我从Visual Studio本地运行时,一切正常。但是,当我尝试连接到生产Web服务器时,从使用ServicEstack客户端的WPF应用程序连接时,我会遇到不同的错误,包括:

  • "找不到"
  • "未经授权"
  • " {"长度不能小于零。参数名称:长度"}"

我在IIS中尝试了多种身份验证的配置,包括启用/禁用表单身份验证,Windows身份验证和基本身份验证,无用。

  • 我有时可以使用codeinchaos.com rest客户端连接。
  • 密码和用户名绝对正确。

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 = "xxxx@xxxxx.com",
        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也实现身份验证。

最新更新