创建数据库项之前的身份验证

时间:2013-05-20 06:44:07

标签: c# wcf windows-phone-7 service-reference

您好我有一些身份验证和数据库项目的创建问题。 在文档中,它说应该在创建之前调用身份验证。所以这是我已经完成的代码,我想知道我的事件是否错误。

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”上设置断点时,我得到错误,如下图所示:

enter image description here

如您所见,它会返回消息“拒绝访问,请先登录”。因此,由于用户名和密码是正确的,我认为我必须让代码的顺序错误。

更新

Gateway是一个服务引用,如下所示:

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

如果认证cookie应该传递给我不知道的下一个服务电话。在文档中没有任何说法。

他们在下面的文档中有一个CookieContainer身份验证,但是只有当你为一个webbrowser创建它时才会这样做吗?

任何可以帮助我的人?​​

1 个答案:

答案 0 :(得分:1)

方法1: - (不通过代码强行传递Cookie)

在您的ASMX网络配置中 添加aspNetCompatibilityEnabled =“true”并设置AllowCookies = false

在ServiceReferences.ClientConfig中添加AllowCookieContainer = true

方法2: - (通过代码传递Cookie)

在您的ASMX Web配置集中,AllowCookies = true 在ServiceReferences.ClientConfig中添加AllowCookieContainer = true 你可以设置

client.CookieContainer = yourCookieContainerVariable

并将此'yourCookieContainerVariable'传递给下一个服务电话。

当您拥有用于身份验证和其他业务功能的单独URL时,此方法特别有用

如:http://www.kotancode.com/2010/08/06/aspnet-authentication-wp7/

所述