C# 向应用程序添加服务引用

C# 向应用程序添加服务引用,c#,asp.net,web-services,C#,Asp.net,Web Services,正在尝试将服务引用添加到我的windows 8应用程序。但是asmx文件位于一个文件夹中,具有特定角色的登录用户可以在其中查看。像一个受保护的文件夹一样,我也在为网站使用asp.net成员资格提供程序。如何添加此引用或对其进行身份验证 谢谢。有一种更简单的方法来授权您的服务用户,这将解决您的一些问题 首先,将您的服务放在一个公共文件夹中,完全没有授权。这将允许您添加来自windows 8应用程序的引用,而不会出现任何问题 然后,在您的服务中,创建一个方法来验证您的用户: public bool

正在尝试将服务引用添加到我的windows 8应用程序。但是asmx文件位于一个文件夹中,具有特定角色的登录用户可以在其中查看。像一个受保护的文件夹一样,我也在为网站使用asp.net成员资格提供程序。如何添加此引用或对其进行身份验证


谢谢。

有一种更简单的方法来授权您的服务用户,这将解决您的一些问题

首先,将您的服务放在一个公共文件夹中,完全没有授权。这将允许您添加来自windows 8应用程序的引用,而不会出现任何问题

然后,在您的服务中,创建一个方法来验证您的用户:

public bool Login( string UserName, string Pwd )
{
    // validate the user and create the forms cookie upon succesfull validaition
    if ( IsValid( UserName, Pwd ) ) 
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( ... );

        string CookieName = FOrmsAuthentication.FormsCookieName;
        string CookieValue = ticket.Encrypt();

        this.Response.Cookies.Add( new HttpCookie( CookieName, CookieValue ) );
    }
}
此公共方法将是Windows 8应用程序应调用的第一个方法

然后使用
PrincipalPermission
属性保护所有其他服务方法:

[PrincipalPermission( Roles="Admin, User" )]
public TheMethodForAdminOrUser()
{
    // do whatever you want
}

属性将保护对服务方法的调用,这样只有通过对
登录
方法的有效调用进行身份验证的用户才能访问您的服务。

这会起作用,但如果我在某些web方法中使用HttpContext会怎么样,windows 8应用程序是否需要在每个请求上发送会话id或其他信息,以识别当前用户是否从客户端登录?只要您对所有调用使用相同的代理实例,代理将保留所有cookie,包括包含会话id的cookie。