- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用自定义 UsernamePasswordValidator 的 WCF 服务。验证器需要访问我的 Entity Framework 上下文。
我想为整个服务调用创建一个 ObjectContext,然后在调用结束时销毁/处置它。因此,我创建了一个提供此功能的单例静态类,但是,现在发生的情况是,如果同时发生两个服务调用,其中一个调用会处置单例。
我要么保留对 ObjectContext 的本地引用,在这种情况下,使用它的第二个服务将其视为已处置并抛出错误,要么,我在任何需要的地方围绕 Singleton 类放置一个包装器属性,然后我所有的更改会被丢弃,因为如果另一个调用已处理该对象,我将获得该对象的新实例。
所以基本上我的问题是如何在每次服务调用时实例化 ObjectContext?
注意:实例需要在服务代码和自定义 UsernamePasswordValidator 代码中都可以访问。
我不能只在构造函数中执行此操作或使用 using 语句,因为那样自定义 UsernamePasswordValidator 无法访问它。有没有办法让每次调用都有一个静态类?这听起来确实不可能,但是解决这个问题的方法是什么?我应该在 session 中缓存对象吗?
我的服务托管在 IIS 中。
更新:
因此,我将其确定为使用 IExtension 对象将状态存储在 InstanceContext 中。但是如何在 UsernamePasswordValidator 中访问当前的 InstanceContext?
最佳答案
好的,最后我通过使用以下静态类并依靠 ASP.NET 为我缓存上下文来解决它。
我不确定这是否是最好的做事方式,但这允许我为每个请求使用一个 ObjectContext,所以我不会旋转太多,这也意味着我不必使用锁如果许多用户使用该服务,这将成为一场噩梦。
public static class MyContextProvider
{
public static MyModel Context
{
get
{
if (HttpContext.Current.Items["context"].IsNull())
{
HttpContext.Current.Items["context"] = new MyModel();
}
return HttpContext.Current.Items["context"] as MyModel;
}
}
}
然后在应用程序中任何需要 ObjectContext 的地方我都可以调用
var context = MyContextProvider.Context;
关于c# - 在 WCF UsernamePasswordValidator 中访问当前的 InstanceContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317000/
我正在尝试使用用户名/密码设置带有 BasicHttpBinding 和身份验证的 WCF web 服务。我制作了自定义身份验证类。但是,它永远不会被调用(通过调试验证)。这是我的 web.confi
我正在为 WCF 使用 UserNamePasswordValidator。我的代码是相似的。我用数据库。有谁知道如何在此方法中获取有关当前连接上下文的信息。我想记录不成功调用的IP地址 public
我有一个使用 net tcp 绑定(bind)和自定义 UserNamePasswordValidator 的 Web 服务。用户名和密码由客户端在 Credentials.UserName.User
与 this question 相关,我有一个自定义的 UserNamePasswordValidator 登录到我们的内部 API。作为登录的一部分,我可以发现用户在我们系统中的角色。 我想稍后在
我在 .NET 4 上有一个带有自定义 UserNamePasswordValidator 的 WCF 服务,通过 SSL 和消息安全保护。 UserNamePasswordValidator 接收用
我正在使用 UserNamePasswordValidator 类作为 WCF 的 UserName 安全性的一部分。这一切都很好,类的 Validate 函数被调用并正常工作。 那我怎么才能知道在我
我在 wcf 中使用自定义 UserNamePassword Validator 来实现安全性。为此,我创建了自签名证书。在尝试使用 Web 服务时,我收到以下错误“无法为 SSL/TLS 安全通道建
我在互联网上浏览过但没有运气,我正在尝试找到一种合适的方法来在服务端缓存用户名和密码 token ,这样每次连接到服务时我都不必创建数据库连接。 这就是我要实现的目标: public class Se
我有一个由 Windows 服务托管的 WCF REST 休息服务。它使用自定义 UserNamePasswordValidator 身份验证。 我想在验证时获取客户端 ip 地址: ublic st
我有一个 WCF 服务通过我的 web.config 连接了一个 UserNamePasswordValidator,没问题。在我的验证器中,我覆盖了 Validate,检查凭据并在必要时抛出 Fau
根据 http://msdn.microsoft.com/en-us/library/system.identitymodel.selectors.usernamepasswordvalidator.
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包含有效代码以重现该问题。请参阅SSCCE.o
我有一个使用自定义 UsernamePasswordValidator 的 WCF 服务。验证器需要访问我的 Entity Framework 上下文。 我想为整个服务调用创建一个 ObjectCon
我有一个带有 netTcp 绑定(bind)(消息 - 用户名)的 WCF 服务。 我实现了我自己的 UserNamePasswordValidator.Validate 方法,在这个方法中我检查了凭
目前我有一项服务使用 UserNamePasswordValidator 来验证客户端用户。验证代码如下: public override void Validate(String userNam
在为每个 WCF 请求调用 UserNamePasswordValidator.Validate(username, password) 之前,我需要运行一些东西。 我已经尝试使用 IDispatch
我的第一个问题是,是否可以将自定义 UserNamePasswordValidor 与 basicHttpBinding 一起使用? 我有一个使用表单例份验证和自定义成员资格提供程序的 asp.net
我们目前正在使用自定义 UserNamePasswordValidator .这允许消费者在 SOAP header 中指定凭据,如下所示: 2013-04-05T16:
我有一个 WCF 服务,我在其中使用自定义 UserNamePasswordValidator 来验证用户。 public override void Validate(string userName
我发现了一个关于使用自定义用户名/密码 ( A simple WCF service with username password authentication: the things they do
我是一名优秀的程序员,十分优秀!