servicestack,Authentication,Iis 7,servicestack" /> servicestack,Authentication,Iis 7,servicestack" />

Authentication 部署到IIS 7时ServiceStack身份验证出现问题

Authentication 部署到IIS 7时ServiceStack身份验证出现问题,authentication,iis-7,servicestack,Authentication,Iis 7,servicestack,在部署到IIS 7生产web服务器时,我在使身份验证正常工作方面遇到问题。我正在使用内存中的身份验证,当我从VisualStudio本地运行时,一切都可以完美地工作。但是,当我尝试使用ServiceStack客户端从WPF应用程序连接到生产web服务器时,我遇到了不同的错误,包括: “找不到” “未经授权” “{”长度不能小于零。参数名称:长度“}” 我在IIS中尝试了许多身份验证配置,包括启用/禁用表单身份验证、Windows身份验证和基本身份验证,但都没有成功 我有时可以使用CodeI

在部署到IIS 7生产web服务器时,我在使身份验证正常工作方面遇到问题。我正在使用内存中的身份验证,当我从VisualStudio本地运行时,一切都可以完美地工作。但是,当我尝试使用ServiceStack客户端从WPF应用程序连接到生产web服务器时,我遇到了不同的错误,包括:

  • “找不到”
  • “未经授权”
  • “{”长度不能小于零。参数名称:长度“}”
我在IIS中尝试了许多身份验证配置,包括启用/禁用表单身份验证、Windows身份验证和基本身份验证,但都没有成功

  • 我有时可以使用CodeInChaos.com REST客户端进行连接
  • 密码和用户名绝对正确
global.asax

public override void Configure(Funq.Container)
{
RegisterPlugins();
注册验证人(集装箱);
注册表缓存(容器);
工厂注册处(货柜);
登记处(集装箱);
登记员(集装箱);
}
私有无效注册器plugins()
{
Add(新的AuthFeature(()=>newauthUserSession(),new IAuthProvider[]{new BasicAuthProvider()}));
}        
专用无效注册器(Funq.Container)
{
var userRepository=newinMemoryAuthRepository();
容器注册(userRepository);
字符串散列;
弦盐;
new SaltedHash().GetHashAndSaltString(“xxxxxxxx”,out hash,out salt);
userRepository.CreateUserAuth(新UserAuth
{
Id=1,
DisplayName=“xxx xxxxxx”,
电子邮件=”xxxx@xxxxx.com",
用户名=“xxxxxxxx,
FirstName=“xxxx”,
LastName=“xxxx”,
PasswordHash=hash,
盐=盐,
角色=新列表{RoleNames.Admin},
},“xxxxxxxx”);
}
我的客户:

公共用户实体GetUserFromDomainUsername(字符串domainUsername) { 尝试 { 使用(var client=new-StormJsonServiceClient(WebServiceUrl){UserName=“xxxxxxx”,Password=“xxxxxxx”}) { var response=client.Send(新用户fromDomainUsernameQuery{DomainUsername=DomainUsername}); 返回响应。用户; } } 捕获(异常) { var ex=作为WebServiceException的异常; 如果(ex!=null) { 抛出新的VqsWebServiceException(GetWebServiceErrorMessage(ex)); } 投掷; } }
IIS身份验证与ServiceStack身份验证无关,如果不需要,请将其关闭

如果启用了IIS身份验证,它将在ServiceStack应用程序上有效运行。因此,它将在对ServiceStack服务的所有请求之前运行,而您最终必须首先满足此安全标准。如果该请求通过,那么您的请求将进入ServiceStack应用程序


大多数在ServiceStack中实现身份验证的人不需要IIS也实现身份验证。

发布您的
web.config
。确保在
AppHost
配置中启用
DebugMode=true
,以便获得有用的堆栈跟踪。IIS身份验证与ServiceStack身份验证无关,如果不需要,请将其关闭。你说你收到了3个不同的错误,大概你提出了3个不同的请求,而不是同一个请求3次?您最好部署一个简单的应用程序,即一个没有身份验证的应用程序,以测试您是否正确设置了IIS配置,因为这是您的第一次部署,如果成功,请启用身份验证。嗨,Scott-谢谢。信不信由你,这就是答案。。。只需关闭IIS中除匿名之外的所有身份验证,就可以了。非常感谢您的指导。西蒙斯:太好了。我添加了一个这样的答案,这样你就可以结束这个问题,其他人也就可以很容易地确定是什么帮助了你。祝你的项目好运。