Аутентификация перед созданием элемента базы данных

Привет у меня есть эта проблема с некоторой аутентификацией и созданием элемента базы данных. В документации сказано, что аутентификацию следует вызывать перед созданием. Итак, вот код, который я сделал, и мне интересно, если у меня есть события в неправильном порядке.

private void ApplicationBarIconButton_Click_5(object sender, EventArgs e)
    {
        Gateway.AuthenticateAsync("username", "password1", "username2", "password2");
        Gateway.AuthenticateCompleted += new EventHandler<ServiceReference.AuthenticateCompletedEventArgs>(AuthenticateTime);    
    }

    private DateTime _nestedDateStart;
    private DateTime _nestedDateEnd;
    private DateTime _nestedDateStartBreak1;
    private DateTime _nestedDateEndBreak1;
    private DateTime _nestedDateStartBreak2;
    private DateTime _nestedDateEndBreak2;

    ServiceReference.TimereportDto Timereport = new ServiceReference.TimereportDto();

    void AuthenticateTime(object sender, ServiceReference.AuthenticateCompletedEventArgs e)
    {

        Gateway.AuthenticateAsync("username1", "password1", "username2", "password2");     

        Timereport.Started = _nestedDateStart;
        Timereport.Ended = _nestedDateEnd;

        Timereport.Break1Start = _nestedDateStartBreak1;
        Timereport.Break1End = _nestedDateEndBreak1;

        Timereport.Break2Start = _nestedDateStartBreak2;
        Timereport.Break2End = _nestedDateEndBreak2;

        Timereport.Comment = Notes.Text;
        Timereport.EmployeeSignature = "apptest";

        Gateway.CreateTimereportAsync(Timereport,"ABD");
        Gateway.CreateTimereportCompleted += new EventHandler<ServiceReference.CreateTimereportCompletedEventArgs>(CreateTimereportCompleted);

    }

    void CreateTimereportCompleted(object sender, ServiceReference.CreateTimereportCompletedEventArgs e)
    {

    }

Когда я устанавливаю точку останова на "CreateTimereportCompleted", я получаю ошибку, как показано ниже на рисунке:

Как вы можете видеть, он возвращает сообщение "Доступ запрещен, сначала войдите в систему". Так как имена пользователей и пароли верны, я считаю, что у меня должен быть код в неправильном порядке или что-то в этом роде.

ОБНОВИТЬ

Шлюз - это сервисная ссылка, которая выглядит так:

ServiceReference.GatewaySoapClient Gateway = new ServiceReference.GatewaySoapClient();

И если файл cookie аутентификации должен быть передан на следующий вызов службы, я не знаю. Ничто не говорит об этом в документации.

Они имеют в документации под Аутентификацией CookieContainer, но разве только тогда, когда вы делаете это для веб-обозревателя?

Кто-нибудь, кто может мне помочь?

1 ответ

Решение

Способ 1:- (без принудительной передачи файлов cookie через код)

В веб-конфигурации ASMX добавьте aspNetCompatibilityEnabled="true" и установите AllowCookies=false

В вашем ServiceReferences.ClientConfig добавьте AllowCookieContainer=true

Способ 2:- (Передача куки через код)

В веб-конфигурации ASMX установите AllowCookies=true. В ServiceReferences.ClientConfig добавьте AllowCookieContainer=true, и вы можете установить

client.CookieContainer = yourCookieContainerVariable

и передайте эту переменную yourCookieContainer для следующего вызова службы.

Этот метод особенно полезен, когда у вас есть отдельный URL для вашей аутентификации и других бизнес-функций

Как показано на: http://www.kotancode.com/2010/08/06/aspnet-authentication-wp7/

Другие вопросы по тегам