【问题标题】:Using public property between web service methods在 Web 服务方法之间使用公共属性
【发布时间】:2016-12-27 10:07:30
【问题描述】:

我想在 asmx Web 服务中定义一个在所有 Web 方法之间共享的属性。 这是我的问题:

代码:

myWS test1 = new myWS();
test1.SetToken(UserID1);
test1.AnotherMethod();


//stuff...

myWS test2 = new myWS();
test2.SetToken(UserID2);
test2.AnotherMethod();

网络服务:

[WebService(Namespace = "http://test.ir/")]
public class myWS : System.Web.Services.WebService
{
    public string Token { get; set; }

    Public void SetToken(int UserID){
      this.Token= BLL.GetToken(UserID);
    }

    Public void AnotherMethod(){
      BLL.CheckToken(Token);//i want token value be per every myWS web service defined
    }
 }

注意事项: * 静态属性不好,因为是所有用户共享,我希望令牌值在每个 myWS 测试中都是唯一的 = new myWS()

谢谢。

编辑:

我的应用程序在每个用户启动时都在 PC 上运行,并且所有实例都调用我的 Web 服务

【问题讨论】:

  • 我不明白。您当前的实施有什么问题? Token 是一个实例变量,因此它对于 myWS 的每个实例都不同
  • 认为他想要基于会话的身份验证。
  • @alessiobortolato:我在第一个方法中填写令牌,但是当第二个调用时,令牌属性为空,这听起来每个 Web 方法请求都有它的属性,并且仅在该请求中意味着,我的应用程序运行每个用户都有一台电脑启动,所有实例都调用我的网络服务
  • 尝试使用会话环境。看看这个问题stackoverflow.com/questions/140627/…

标签: c# web-services asmx


【解决方案1】:

我发现任何网络服务实例都是独一无二的。 我们通过将参数发送到我们的方法来解决此问题,将其与公共属性相关联并在该 Web 服务实例的其他方法中使用。

网络服务: [WebService(Namespace = "http://test.ir/")]

public class myWS : System.Web.Services.WebService
{
    public string Token { get; set; }

    Public void SetToken(string myToken){
      this.Token= myToken;
    }

    Public void Method1(){
      BLL.CheckToken1(Token);
    }

    Public void Method2(){
      BLL.CheckToken2(Token);
    }
 }

呼叫:

myWS test1 = new myWS();
test1.SetToken("abc");
test1.Method1();
test1.Method2();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2010-12-24
    相关资源
    最近更新 更多