我正在尝试使用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服务实现自定义表单身份验证的文章也将受到欢迎。我已尝试尝试各种其他设置,包括我可以找到但无法取得任何进展的所有异常详细设置(尽管我能够做出一些回归并获得不同的异常,例如缺少端点等)。
感谢您的时间。
答案 0 :(得分:1)
不确定这是否有帮助。我从来没有写过这样的服务,但是你的配置创建了WCF服务,它不是ASP.NET AJAX准备好的,而是使用XML而不是JSON。尝试使用此而不是webHttp行为:
<endpointBehaviors>
<behavior name="BtxAuthenticationEndpointBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>