我正在使用 Visual Studio 2010 在 ASP.NET 中实现一个基本的身份验证 WCF 服务。我通过大致遵循本指南的前几部分来完成此操作。
我有默认的 ASP.NET 网站(在 VS2010 中)登录页面设置为使用我的 WCF 服务来验证用户,使用这个代码隐藏和一个<asp: Login>
属性:
protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
{
bool isAuthenticated = false;
string customCredential = "Not used by the default membership provider.";
bool isPersistent = LoginUser.RememberMeSet; // Authentication ticket remains valid across sessions?
AuthenticationServiceClient authClient = new AuthenticationServiceClient();
isAuthenticated = authClient.Login(LoginUser.UserName, LoginUser.Password, customCredential, isPersistent);
e.Authenticated = isAuthenticated;
authClient.Close();
}
此外,当我使用 IIS Express 时,我已经完成了这项工作,但后来我转移到了 IIS 7.5。
当上述函数被调用时,调用authClient.Login(...)
.
通常的错误页面会弹出这样说:
“/AuthClientSite”应用程序中的服务器错误。
AuthenticationService 被禁用。
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ServiceModel.FaultException`1[[System.ServiceModel.ExceptionDetail, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]:AuthenticationService 已禁用。
由于此代码与 IIS Express 上的代码几乎相同,并且鉴于我的服务似乎刚刚被禁用,我猜测它是 IIS 中某个需要修复的设置。
我正在包装System.Web.ApplicationServices.AuthenticationService
服务,如上面的链接所示。
任何关于正在发生的事情的想法都会有很大的帮助。在过去的几天里,我尝试了很多不同的事情,我不记得和/或将它们全部列出,但我会尽力回答你所有的问题/意见。