Пользовательские ASP.NET Формы Службы аутентификации с помощью WCF

StackOverflow https://stackoverflow.com/questions/3856772

  •  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>  
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top