Пользовательские ASP.NET Формы Службы аутентификации с помощью WCF
-
27-09-2019 - |
Вопрос
Я пытаюсь создать пользовательскую службу аутентификации ASP.NET Forms, используя WCF.Я вызываю его через тестовую страницу, которая содержит только одну строку JS (за исключением скриптов ScriptManager).Проблема в том, что сервер возвращает код ответа 500, а тело ответа пустое.Мои точки останова в методе service и в Application_Error в Global.asax не заданы.
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.Я пробовал экспериментировать с различными другими настройками, включая все параметры сведений об исключениях, которые я смог найти, но не смог добиться никакого прогресса (хотя я смог выполнить некоторый регресс и получить различные исключения, такие как отсутствующие конечные точки и так далее).
Спасибо вам за уделенное время.
Решение
Не уверен, поможет ли это.Я никогда не писал таких услуг, но создает конфигурацию службы WCF, который не ASP.NET "Аякс" готов и работает с XML, а не JSON.Попробуйте использовать это вместо поведения webHttp:
<endpointBehaviors>
<behavior name="BtxAuthenticationEndpointBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>