C# 每个实例的WCF
我的WCF服务代码如下:C# 每个实例的WCF,c#,winforms,wcf,web-services,.net-4.0,C#,Winforms,Wcf,Web Services,.net 4.0,我的WCF服务代码如下: [ServiceContract] [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] public class SomeService { public string Password { [OperationContract] get; [OperationContract] s
[ServiceContract]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
public class SomeService
{
public string Password { [OperationContract] get; [OperationContract] set; }
public void CheckPassword()
{
if (Password == null || Password != "password")
throw new FaultException("Invalid Password");
}
[OperationContract]
public string SomeMethod()
{
this.CheckPassword();
return "Some Data";
}
}
public class ClientClass
{
public ClientClass()
{
STASomeService.Value.SomeMethod();
}
}
public class ClientClass
{
public ClientClass()
{
STASomeService.Value.set_Password("password");
}
}
而客户端windows应用程序使用它的方式如下:
[ServiceContract]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
public class SomeService
{
public string Password { [OperationContract] get; [OperationContract] set; }
public void CheckPassword()
{
if (Password == null || Password != "password")
throw new FaultException("Invalid Password");
}
[OperationContract]
public string SomeMethod()
{
this.CheckPassword();
return "Some Data";
}
}
public class ClientClass
{
public ClientClass()
{
STASomeService.Value.SomeMethod();
}
}
public class ClientClass
{
public ClientClass()
{
STASomeService.Value.set_Password("password");
}
}
每当实例化SomeService
类时,如何重置SomeService.Password
的值?我不希望攻击者访问我的服务方法,但当实际客户端设置密码时,密码在每次服务调用中都保留在SomeService.Password
属性中。但是我想保留每个实例的密码
值,因为客户端需要它
我的代码是在VS2010 Pro中构建的C#框架4中
请帮忙。提前感谢。您不必重置
SomeService.Password的值,因为它不是静态的。你看到的是相反的东西吗
由于您使用的是InstanceContextMode.Single
(我最初忽略了这一点),因此最好的办法是模拟在网络绑定的singleton中有单个实例的行为。我能想到的促进这一点的唯一方法是拥有一个代理服务类,该类与您的服务的契约相匹配,并根据特定条件(将定义会话)将其调用委托给自定义实例。保持这种方式会很麻烦,并且会增加不必要的抽象级别,但是(至少在我看来)它应该可以工作谢谢你的回答。这是因为我将其作为服务引用使用,并且服务的InstanceContextMode
设置为Single
,因此该值不会更改。我希望每个服务实例的值都不会更改。请帮忙。更新了我的问题细节(现在删除了评论),希望它能帮到你。