C# 授权部分web方法

C# 授权部分web方法,c#,asp.net,web-services,authorization,C#,Asp.net,Web Services,Authorization,我使用的是ASMXWeb服务,而不是WCF,我实现了用于基本身份验证的简单HTTP模块。 授权文件web.config deny/allow和User.IsInRole时,一切正常 但是,我想授权部分web方法。为了这个目的,我找到了唯一的原则性许可。要求使用安眠药。但是,尽管我传递了有效的登录凭据,但它总是抛出一个异常 Web配置: <system.webServer> <modules> <add name="Authentica

我使用的是ASMXWeb服务,而不是WCF,我实现了用于基本身份验证的简单HTTP模块。 授权文件web.config deny/allow和User.IsInRole时,一切正常

但是,我想授权部分web方法。为了这个目的,我找到了唯一的原则性许可。要求使用安眠药。但是,尽管我传递了有效的登录凭据,但它总是抛出一个异常

Web配置:

    <system.webServer>
    <modules>
        <add name="AuthenticationModule" type="AuthenticationModule"/>
    </modules>
</system.webServer>
<system.web>
        <authentication mode="None"/>
    <authorization>
        <allow users="*" />
    </authorization>
</system.web>
它抛出:

Unhandled exception: System.Web.Services.Protocols.SoapException: System.Web.Serv
ices.Protocols.SoapException: 
   v System.Security.Permissions.PrincipalPermission.ThrowSecurityException()
   v System.Security.Permissions.PrincipalPermission.Demand()
   v System.Security.PermissionSet.DemandNonCAS()
   v WSAutentization.CommonServices.HelloWorldForEveryone() in CommonServices.asmx.cs:řádek 30
   v System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClien
tMessage message, WebResponse response, Stream responseStream, Boolean asyncCall
)
   v System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodNa
me, Object[] parameters)
   v Console.CommonService.CommonServices.HelloWorldForEveryone() v d:\TMP\WSAut
entization\Console\Web References\CommonService\Reference.cs:řádek 93
   v Console.Program.Main(String[] args) v d:\TMP\WSAutentization\Console\Progra
m.cs:line 35
是否有其他方法可以授权部分web方法

非常感谢

PrincipalPermission根据Thread.CurrentPrincipal进行检查。 我在您的身份验证模块中没有看到代码,但我遇到了相同的问题,解决方案是设置

Thread.CurrentPrincipal = HttpContext.Current.User;
Thread.CurrentPrincipal = HttpContext.Current.User;