1

我正在使用 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服务,如上面的链接所示

任何关于正在发生的事情的想法都会有很大的帮助。在过去的几天里,我尝试了很多不同的事情,我不记得和/或将它们全部列出,但我会尽力回答你所有的问题/意见。

4

1 回答 1

3

所以我想出了我的问题。我需要将这些行添加到运行服务的网站中的 Web.config 文件中:

<system.web.extensions>
    <scripting>
        <webServices>
            <authenticationService enabled="true"
                requireSSL = "false"/>
        </webServices>
    </scripting>
</system.web.extensions>

希望这对将来遇到此问题的任何人有所帮助。

于 2012-05-30T15:52:01.507 回答