我正在尝试使用 WCF 创建自定义 ASP.NET 表单身份验证服务。我通过仅包含一行 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 服务实现自定义表单身份验证的文章也将受到欢迎。我尝试了各种其他设置,包括我能找到但无法取得任何进展的所有异常详细信息设置(尽管我能够进行一些回归并获得不同的异常,例如缺少端点等)。
感谢您的时间。