使用WCF自定义ASP.NET Forms身份验证服务

时间:2010-10-04 15:40:19

标签: wcf asp.net-authentication

我正在尝试使用WCF创建自定义ASP.NET Forms身份验证服务。我通过一个只包含一行JS的测试页面调用它(ScriptManager脚本除外)。问题是服务器返回响应代码500并且响应主体为空。我在服务方法和Global.asax中的Application_Error中的断点没有被击中。

Sys.Services.AuthenticationService.login('user', 'pass', false, null, null, null, null, null);

我可以通过以下请求正文在浏览器工具中看到请求转到服务器:

{"userName":"user","password":"pass","createPersistentCookie":false}

请求方面的其他事情似乎也很好。

以下是配置服务:

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="BtxAuthenticationEndpointBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service name="MyNamespace.BtxAuthenticationService">
      <endpoint contract="MyNamespace.IBtxAuthenticationService" binding="webHttpBinding" behaviorConfiguration="BtxAuthenticationEndpointBehavior"/>
    </service>
  </services>
</system.serviceModel>

界面声明:

[ServiceContract]
public interface IBtxAuthenticationService
{
    [OperationContract]
    [WebInvoke]
    bool Login(string username, string password, bool createPersistentCookie);

    [OperationContract]
    [WebInvoke]
    void Logout();
}

实施:

public class BtxAuthenticationService : IBtxAuthenticationService
{
    public bool Login(string username, string password, bool createPersistentCookie)
    {
        ... irrelevant because this is never hit
    }

    public void Logout()
    {
    }
}

有人可以告诉我如何配置它或指向我调试它的方法。关于使用WCF服务实现自定义表单身份验证的文章也将受到欢迎。我已尝试尝试各种其他设置,包括我可以找到但无法取得任何进展的所有异常详细设置(尽管我能够做出一些回归并获得不同的异常,例如缺少端点等)。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

不确定这是否有帮助。我从来没有写过这样的服务,但是你的配置创建了WCF服务,它不是ASP.NET AJAX准备好的,而是使用XML而不是JSON。尝试使用此而不是webHttp行为:

<endpointBehaviors> 
  <behavior name="BtxAuthenticationEndpointBehavior"> 
    <enableWebScript /> 
  </behavior> 
</endpointBehaviors>