我有很多控制器有很多动作.每个操作都有自己的角色(角色名称= ControllerName.actionName).
在以前的版本中,我可以测试当前用户是否可以使用"通用"AuthorizeAttribute访问操作:
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
string currentAction = actionContext.ActionDescriptor.ActionName;
string currentController = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName;
Roles = (currentController + "." + currentAction).ToLower();
base.OnAuthorization(actionContext);
}
Run Code Online (Sandbox Code Playgroud)
使用asp.net 5版本,我发现我需要使用需求(如何在ASP.NET Core中创建自定义AuthorizeAttribute?).问题是AuthorizationContext没有向我们提供有关用户尝试访问的操作的信息.
我不想在每个操作上放置Authorize属性,有没有办法用新框架实现我的要求?(我更喜欢避免使用HttpContext.Current,它不适合管道架构)
我需要在加载模块时加载 css,所以我使用 shims 这样做:
function loadCss(url) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
document.getElementsByTagName("head")[0].appendChild(link);
}
requirejs.config({ paths: paths, shim: {
'easyzoom': {
'deps': ['jquery'],
init: function () { loadCss('/lib/easyzoom/css/easyzoom.css'); }
}}
});
Run Code Online (Sandbox Code Playgroud)
它适用于其他库,如 Datatables,因为它们是非 Amd 模块。但是对于 Amd 模块,requireJs 不会寻找垫片,因此不会提升我的 init 函数。
有没有办法在加载模块后调用回调?或者加载一个 Amd 模块,因为它是一个普通的 javascript 文件来寻找垫片?
我的应用程序在迁移到beta 6/7之后停止工作,在调查之后,我发现我的json反序列化器不再使用(Jil),它被要求写入而不是用于阅读.
现在已经3天了,我正在搜索论坛并阅读aspnet代码,但我还没有找到问题.
我注意到JSON.net在beta 6中无处不在,在beta 7中稍微少一点.
这是我的代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore(options =>
{
var jilFormatter = new JilMediaTypeFormatter();
options.OutputFormatters.Clear();
options.OutputFormatters.Add(jilFormatter);
options.InputFormatters.Clear();
options.InputFormatters.Add(jilFormatter);
options.FormatterMappings.SetMediaTypeMappingForFormat("json", MediaTypeHeaderValue.Parse("application/json"));
options.ModelBinders.Add(new DocumentModelBinder());
options.ModelBinders.Add(new DataTablesBinder());
});
services.AddDataProtection();
services.AddWebEncoders();
}
Run Code Online (Sandbox Code Playgroud)
即使我只是在没有添加对象的情况下执行InputFormatters.Clear(),它也会对请求进行反序列化,我不知道它是如何做到的.
我的JIL InputFormatter/OutputFormatter(ouputformatter工作,我可以在CanWrite中断,但CanRead没有任何反应)
internal class JilMediaTypeFormatter : IOutputFormatter, IInputFormatter
{
private static readonly string [] _readableTypes = new[] { "application/json", "text/json", "text/javascript" };
private static readonly Task<bool> _done = Task.FromResult(true);
private readonly Options _options = Options.RFC1123ExcludeNullsIncludeInherited;
public bool CanWriteResult(OutputFormatterContext context, Microsoft.Net.Http.Headers.MediaTypeHeaderValue contentType)
{
return contentType ==null …Run Code Online (Sandbox Code Playgroud) 在asp.net核心中实现重试策略的最简单方法是什么?这个想法很简单,如果引发某些特定类型的异常(比如sql deadlock),我们最多重试httprequest N次.
我使用中间件进行som自定义身份验证,我不知道中间件是否是这种机制的最佳选择(我是管道架构的新手,我已经读过有几种类型的组件:Singletons,per - 请求等).
更新:这里给出了Sql死锁作为一个例子,我的应用程序只有其中的restful webservices,每个请求都很短,并且完全在Serializable Sql Transaction中运行(没有其他副作用,我无法像发送电子邮件那样回滚或删除文件...).因为我正在使用事务,并且因为我无法保证我的事务将始终以相同的顺序使用表(这取决于谁调用webservices),死锁是不可避免的,所以我需要有一个所有的重试策略httprequest.(问题不是关于交易和死锁,而是如何在asp.net核心中实施重试警察)