Mah*_*vej 7 signalr signalr-hub
无论如何为hub功能定义和添加方法过滤器(如mvc中的ActionFilters)我的意思是这样的:
public class MyHub : Hub
{
[Log]
public string RegisterUser(UserModel model){
...
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在LogAttribute实现中做一些控制.
hal*_*r73 13
您应该能够通过使用SignalR的Hub管道在ASP.NET MVC中实现与动作过滤器类似的功能:
public class LoggingPipelineModule : HubPipelineModule
{
protected override bool OnBeforeIncoming(IHubIncomingInvokerContext context)
{
Debug.WriteLine("Invoking '{0}.{1}({2})'.",
context.MethodDescriptor.Hub.Name,
context.MethodDescriptor.Name,
string.Join(", ", context.Args));
return base.OnBeforeIncoming(context);
}
protected override object OnAfterIncoming(object result, IHubIncomingInvokerContext context)
{
Debug.WriteLine("Finished Invoking '{0}.{1}'. Returned '{2}'.",
context.MethodDescriptor.Hub.Name,
context.MethodDescriptor.Name,
result);
return base.OnAfterIncoming(result, context);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只想记录附加了自定义属性的方法,则可以在记录之前检查自定义属性:
protected override bool OnBeforeIncoming(IHubIncomingInvokerContext context)
{
if (context.MethodDescriptor.Attributes.OfType<MyAttribute>().Any())
{
// Log here.
}
return base.OnBeforeIncoming(context);
}
Run Code Online (Sandbox Code Playgroud)
您可以在致电之前注册您的模块MapSignalR
:
public void Configuration(IAppBuilder app)
{
GlobalHost.HubPipeline.AddModule(new LoggingPipelineModule());
app.MapSignalR();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1492 次 |
最近记录: |