Пользовательская служба проверки подлинности форм ASP.NET с WCF - PullRequest
1 голос
/ 04 октября 2010

Я пытаюсь создать пользовательскую службу аутентификации ASP.NET Forms, используя WCF. Я звоню через тестовую страницу, которая содержит только одну строку JS (кроме скриптов ScriptManager). Проблема в том, что сервер возвращает код ответа 500, а тело ответа пусто. Мои контрольные точки в методе службы и в 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. Я попытался поэкспериментировать с различными другими настройками, включая все настройки сведений об исключениях, которые я смог найти, но не смог добиться какого-либо прогресса (хотя мне удалось добиться некоторого регресса и получить другие исключения, например, отсутствие конечных точек и т. Д.)

Спасибо за ваше время.

1 Ответ

1 голос
/ 04 октября 2010

Не уверен, поможет ли это.Я никогда не писал такой службы, но ваша конфигурация создает службу WCF, которая не готова к ASP.NET AJAX и работает с XML вместо JSON.Попробуйте использовать это вместо поведения webHttp:

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