所以我使用的建议与属性和过滤器一个简单的存储库模式在这里,因为我使用的是Ninject.Web.WebApi-RC从NuGet包.
这适用于第一个请求,但由于我有我DbContext的请求范围,因此它会在所有后续请求中处理.
这是我的属性:
public class CommunicationKeyValidationAttribute : FilterAttribute
{
}
Run Code Online (Sandbox Code Playgroud)
这是我的过滤器:
public class CommunicationKeyValidationFilter : AbstractActionFilter
{
public CommunicationKeyValidationFilter(IRepository repository)
{
this.repository = repository;
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的存储库:
public class Repository : IRepository
{
public Repository(MyDbContext dbContext)
{
this.dbContext = dbContext;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Ninject绑定:
this.Kernel.Bind<MyDbContext>().ToSelf().InRequestScope();
this.Kernel.Bind<IRepository>().To<Repository>().InRequestScope();
this.Kernel.BindHttpFilter<CommunicationKeyValidationFilter>(FilterScope.Action)
.WhenActionMethodHas<CommunicationKeyValidationAttribute>()
.InRequestScope();
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像这样:
public class HomeController
{
[CommunicationKeyValidation]
public ActionResult Index()
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这里的问题CommunicationKeyValidationFilter …
我有一个奇怪的情况,我试图在标签模拟和标签阅读器模式之间切换我的PN532.读者持续约70ms,标签仿真运行约600ms.
我想要发生的是,当我将我的Android设备放在天线附近时,它会读取模拟标签.当我将PN标签保存到PN532时,它应该读取标签.
我的解决方案有点工作,但我看到一个奇怪的情况,当我打电话readPassiveTargetID测试无源标签的存在时,Android正在响应.这样会很好,但我认为Android正在启动一项服务,阻止它阅读模拟标签.
在测试时,有时设备根本不与PN532通信,但是当他们这样做时,最常用的是读卡器模式.以下是发生这种情况时得到的输出:
Nexus 5x(Android 6):
<< 4A 1 0
>> 4B 1 1 0 4 60 4 1 2 3 4 5 78 80 71 0
Run Code Online (Sandbox Code Playgroud)
Galaxy S4(Android 5.0.1):
<< 4A 1 0
>> 4B 1 1 0 4 20 4 8 87 F6 62 5 78 B3 70 2
Run Code Online (Sandbox Code Playgroud)
5x通常会在一秒左右后读取模拟标签,但是当我在两种模式之间切换时,S4很少会读取标签.当我只运行标签模拟时,两个设备都可以正常运行.
我在想我可能会遇到一些问题.