Я пытаюсь создать пользовательскую службу проверки подлинности ASP.NET Forms с использованием WCF. Я вызываю его через тестовую страницу, содержащую только одну строку JS (за исключением скриптов ScriptManager). Проблема в том, что сервер возвращает код ответа 500, а тело ответа пусто. Мои точки останова в методе службы и в Application_Error в Global.asax не попадают.Пользовательские службы проверки подлинности форм ASP.NET с WCF
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. Я пробовал экспериментировать с другими другими настройками, включая все параметры подробностей исключений, которые я мог найти, но не смог добиться какого-либо прогресса (хотя я смог сделать некоторый регресс и получить разные исключения, такие как отсутствующие конечные точки и т. Д.).
Спасибо за ваше время.
Я уже пробовал это. Я попробую еще раз завтра, когда я доберусь до своей рабочей машины, но я считаю, что enableWebScript отвечает за предоставление прокси-сервера JS, который в этом случае не нужен. Возможно, я ошибаюсь, но даже если это проблема, я должен увидеть некоторые более описательные ошибки. – Stilgar
Да, вы правы. EnableWebScript позволяет добавлять службу в качестве ссылки на ScriptManager и предоставляет прокси-сервер JS. Но он также переключает формат сообщений в JSON. Вы также можете сделать это в атрибуте WebInvoke, установив форматы Request and Response. Также попробуйте включить уровень AspNetCompatibility. –
Я попытался установить формат через элемент webHttp (для этого есть атрибут), но это не помогло. – Stilgar