2013-05-20 2 views
0

안녕하세요, 일부 인증 및 데이터베이스 항목 만들기에이 문제가 있습니다. 설명서에 작성하기 전에 인증을 호출해야한다고 나와 있습니다. 그래서 여기에 내가 한 코드가 있는데 나는 잘못된 순서로 이벤트가 있는지 궁금합니다.데이터베이스 항목을 만들기 전에 인증

enter image description here

는 "처음 로그인하시기 바랍니다, 액세스가 거부되었습니다"는 메시지를 반환 볼 수 있듯이 : 내가 "CreateTimereportCompleted"에 중단 점을 설정하면

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) 
    { 

    } 

나는 이미지에 아래 그림과 같이 오류 . 따라서 사용자 이름과 암호가 맞기 때문에 잘못된 순서 또는 다른 코드를 사용해야합니다.

UPDATE

게이트웨이는 다음과 같이 보이는 servicereference입니다 :

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

그리고 인증 쿠키가 내가 아는 그나마 다음 서비스 호출에 전달하도록되어있는 경우. 이 문서에서 말하는 것은 없습니다.

아래의 문서에 CookieContainer 인증이 있지만 웹 브라우저 용으로 만 만들었습니까?

나를 도울 수있는 사람은 누구입니까?

+0

당신이 포함하는 질문을 확장 주실 래요 .. 어떤 게이트웨이 개체이며 않는 인증 쿠키가 다음 서비스 호출로 전달되는 것과 관련이 있습니까? –

+0

내 질문을 업데이 트했습니다 그 혼란에 더 많은 의미를주는 희망 – mogren3000

+0

GatewayAuthenticateAsync는 WCF 호출이며 WCF 기본 인증 서비스 또는 사용자 구현과 연결되어 있습니까?또는 CreateTimereportAsync에 대한 wcf 코드 내에서이 Authenticate를 호출하고 호출이 성공하면 데이터베이스에서 데이터를 가져 오십시오. (WCF CreateTimereport 메서드 내에서 데이터베이스를 검색하기 전에 Authenticate를 호출하여 해당 방식으로 실행되는지 확인합니다. –

답변

1

방법 1 : - 당신의 ASMX 웹 설정에서

(강제 코드를 통해 쿠키를 거치지 않고) = "true"로 aspNetCompatibilityEnabled을 추가하고 ServiceReferences.ClientConfig에서

= 거짓 AllowCookies 설정 AllowCookieContainer = true를 추가하십시오.

방법 2 - (코드를 통해 쿠키 전달)

당신의 ServiceReferences.ClientConfig에서 당신의 ASMX 웹 설정 세트 AllowCookies에서

= 진정한 은 = 사실 AllowCookieContainer를 추가하고 당신은

client.CookieContainer = yourCookieContainerVariable

을 설정하고 다음 서비스이 'yourCookieContainerVariable'함께 전달할 수 있습니다 요구. 에 도시 된 바와 같이 당신이 당신의 authenticationa 차 다른 비즈니스 기능

에 대해 별도의 URL을 때

이 방법은 특히 유용하다 : http://www.kotancode.com/2010/08/06/aspnet-authentication-wp7/