こんにちは、認証とデータベース項目の作成に問題があります。ドキュメントでは、作成前に認証を呼び出す必要があると書かれています。これが私が行ったコードです。イベントの順序が間違っているのではないかと思います。
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」にブレークポイントを設定すると、以下の画像に示すようなエラーが発生します。
ご覧のとおり、「アクセスが拒否されました。最初にログインしてください」というメッセージが返されます。ユーザー名とパスワードが正しいので、コードの順序が間違っている必要があると思います。
アップデート
Gateway は、次のようなサービス参照です。
ServiceReference.GatewaySoapClient Gateway = new ServiceReference.GatewaySoapClient();
そして、認証クッキーが次のサービス呼び出しに渡されることになっているかどうかはわかりません。ドキュメントでそれを言っているものは何もありません。
Authentication の下のドキュメントに CookieContainer がありますが、それは Web ブラウザー用に作成した場合だけではありませんか?
誰でも私を助けることができますか?