小编Der*_*eer的帖子

如何在ASP.NET Core中创建自定义AuthorizeAttribute?

我正在尝试在ASP.NET Core中创建自定义授权属性.在以前的版本中,可以覆盖bool AuthorizeCore(HttpContextBase httpContext).但这不再存在于AuthorizeAttribute.

制作自定义AuthorizeAttribute的当前方法是什么?

我想要完成的任务:我在Header Authorization中收到一个会话ID.从该ID我将知道特定动作是否有效.

c# asp.net authorization asp.net-core-mvc asp.net-core

362
推荐指数
13
解决办法
19万
查看次数

为什么ExecutionPolicy行为因Visual Studio中的项目而异?

我在特定的PC上使用NuGet已经有一段时间了.现在,我在VS2010中创建了一个新项目(如果重要的话,它是使用单页应用程序模板的MVC 4 Beta项目).当我选择

工具/库包管理器/包管理器控制台

控制台窗口打开但显示错误:

无法加载文件C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.7.30402.9028\Modules\NuGet\profile.ps1,因为禁用了脚本的执行这个系统.有关详细信息,请参阅"get-help about_signing".

但是,其他项目仍可以打开并使用Package Manager控制台.

在每种情况下,VS2010都以同一用户身份运行.

如果我打开命令提示符(使用运行VS2010的同一帐户),请启动PowerShell,然后输入命令

GET-ExecutionPolicy

PowerShell返回

受限

我基于Scott Hanselman博客的理解是,如果ExecutionPolicy受到限制,脚本根本不应该运行.

为什么现有项目能够使用包管理器控制台,而新的项目不能?

更新:将ExecutionPolicy更改为AllSigned 重新启动VS2010解决了当前的问题,但我的主要问题是为什么其他项目能够绕过已建立的ExecutionPolicy.VS2010 以管理员身份运行.

visual-studio-2010 nuget

65
推荐指数
4
解决办法
3万
查看次数

将空的js数组传递给控制器​​会给出null

这是我的模型,它是一个WCF代理类

public class MyModel
{
    public Employees[] MyEmpls{get;set;}
    public int Id{get;set;}
    public OrgName{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

将下面的json结构对象传递MyEmpls as empty array给MVC控制器.

["Id":12, "MyEmpls":[], "OrgName":"Kekran Mcran"]
Run Code Online (Sandbox Code Playgroud)

调节器

[HttpPost]
public ActionResult SaveOrg(MyModel model)
{
  //model.MyEmpls is null here
}
Run Code Online (Sandbox Code Playgroud)

我期待mode.MyEmpls作为空c#数组而不是null.有人可以帮我吗?我们需要为此编写自定义模型绑定器吗?

c# asp.net-mvc wcf json model-binding

33
推荐指数
2
解决办法
1万
查看次数

如何备份Amazon RDS MS SQL Server数据库实例并在本地还原

可以使用Microsoft SQL Server Management Studio中的标准任务 - >备份和任务 - >还原功能,在Amazon RDS实例上运行数据库的备份并在本地计算机上还原它吗?如果是这样,你怎么做呢?

请注意,此问题与您是否可以批量复制数据或生成脚本无关,但是您是否可以创建可以使用SSMS还原功能还原的真正.BAK数据库备份.

sql-server amazon-web-services amazon-rds

14
推荐指数
2
解决办法
1万
查看次数

为什么我的JWT承载认证会在令牌显示后5分钟将令牌识别为过期?

我正在使用AspNet.Security.OpenIdConnect.Server来发出JWT令牌,并将AuthorizationCodeLifetime设置为30秒进行测试.这是我用来设置选项的代码片段

        options.TokenEndpointPath = "/api/token";
        options.AllowInsecureHttp = true;
        options.AccessTokenHandler = new JwtSecurityTokenHandler();
        options.SigningCredentials.Add(new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256));
        options.AccessTokenLifetime = TimeSpan.FromSeconds(30);
        options.AuthorizationCodeLifetime = TimeSpan.FromSeconds(30);
Run Code Online (Sandbox Code Playgroud)

返回的令牌包含:

  "expires_in": 30,
Run Code Online (Sandbox Code Playgroud)

并且反序列化的令牌包含以下声明:

 "nbf": 1476915220,
 "exp": 1476915250,
 "iat": 1476915220,
Run Code Online (Sandbox Code Playgroud)

如您所见,exp(过期时间)是在iat(发布时间)之后30秒.然而,令牌在到期后5分钟才触发401 Unauthorized.如果我们将exp号码插入http://www.epochconverter.com/,那么我们将看到这个评估结果为2016年10月19日星期三格林威治标准时间22:14:10,当地时间是下午5:14:10.

以下是Core库的一些记录输出:

Microsoft.IdentityModel.Tokens.SecurityTokenExpiredException: IDX10223: Lifetime validation failed. The token is expired.
ValidTo: '10/19/2016 22:14:10'
Current time: '10/19/2016 22:19:10'.
   at Microsoft.IdentityModel.Tokens.Validators.ValidateLifetime(Nullable`1 notBefore, Nullable`1 expires, SecurityToken securityToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateLifetime(Nullable`1 notBefore, Nullable`1 expires, JwtSecurityToken securityToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.<HandleAuthenticateAsync>d__1.MoveNext()
info: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware[7] …
Run Code Online (Sandbox Code Playgroud)

jwt aspnet-contrib asp.net-core

10
推荐指数
1
解决办法
4138
查看次数

是什么原因导致SignalR在连接时接收net :: ERR_CONNECTION_RESET?

我有一个简单的SingulaR示例,我已经添加到传统的ASP.Net MVC应用程序中.

以下是各个部分:

OWIN启动课程

[assembly: OwinStartup(typeof (Startup))]

namespace MyApp.Web
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SignalR Hub

using System.Collections.Generic;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

namespace MyApp.Web
{
    [HubName("podService")]
    public class PodServiceHub : Hub
    {
        public PodServiceHub()
        {
            ;
        }

        public IEnumerable<string> GetMessages()
        {
            return new[] {"blah", "blah", "blah"};
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

服务器端外观

using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

namespace MyApp.Web
{
    public class PodService
    {
        PodService(IHubConnectionContext<dynamic> clients)
        {
            Clients = clients;
        }

        public PodService()
            : …
Run Code Online (Sandbox Code Playgroud)

signalr

7
推荐指数
2
解决办法
1万
查看次数

动态 Github 操作步骤

下面显示了典型构建的 Github Actions 选项卡显示的内容:

输出

构建步骤实际上有许多子步骤,但我不想使用 Github Actions 作为脚本语言,只是为了能够谨慎地显示每个子步骤。Github Actions 是否提供了某种魔力来表明您希望构建的可视化显示离散步骤(即“动态步骤”)?

我希望出现类似以下内容的内容,这会导致在 Github Actions 构建可视化的输出中创建离散结果节点:

- name: Dynamic Steps
  run |
     echo "###github-action-step: Step 1"
     echo "###github-action-step: Step 2"
     echo "###github-action-step: Step 3"

Run Code Online (Sandbox Code Playgroud)

github-actions

7
推荐指数
1
解决办法
2964
查看次数

在.Net中对字符串进行标记的方法有哪些?

对于从Java迁移的任何人来说,这必须是一个经典的.NET问题.

.NET似乎没有直接等同于java.io.StreamTokenizer,但是JLCA提供了一个试图实现它的SupportClass.我相信JLCA还提供了一个Tokenizer SupportClass,它以String作为源,我认为StreamTokenizer是派生出来的,但事实并非如此.

对流和字符串进行令牌化的首选方法是什么?还是有一个?如何在.Net中标记流?我想拥有java.io.StreamTokenizer提供的灵活性.有什么想法吗?

.net c# java migration

6
推荐指数
1
解决办法
4538
查看次数

如何配置ASP.Net TestHost与OpenId Connect一起使用?

我有一个ASP.Net核心应用程序,配置为发布和验证JWT承载令牌.当站点在Kestrel中托管时,客户端能够成功检索承载令牌并使用令牌进行身份验证.

我还有一套使用Microsoft.AspNetCore.TestHost.TestServer的集成测试.在添加身份验证之前,测试能够成功地对应用程序发出请求.添加身份验证后,我开始收到有关访问open id配置的错误.我看到的具体例外是:

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://  
fail: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware[3]
      Exception occurred while processing message.
System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'http://localhost/.well-known/openid-configuration'. ---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'http://localhost/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found).
Run Code Online (Sandbox Code Playgroud)

根据我的研究,当管理局设置为与托管服务器不同的主机时,有时会触发此操作.例如,Kestrel 默认运行在http:// localhost:5000,这是我最初设置的权限,但在将其设置为TestServer正在模拟的内容(http:// localhost)时,它仍然会出现相同的错误.这是我的身份验证配置:

    app.UseJwtBearerAuthentication(new JwtBearerOptions
    {
        AutomaticAuthenticate = true,
        AutomaticChallenge = true,
        RequireHttpsMetadata = false,
        TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = signingKey,
            ValidateAudience = true …
Run Code Online (Sandbox Code Playgroud)

openid-connect asp.net-core identityserver4 asp.net-core-testhost

5
推荐指数
1
解决办法
1026
查看次数

如何将可读流传输给gulp.dest()?

我有以下示例代码尝试将流传输到gulp.dest():

  var gulp = require('gulp');
  var stream = require('stream');

  var readable = new stream.Readable;
  readable.push('Hello, world!');
  readable.push(null);
  readable
  .pipe(gulp.dest('./test.txt'));
Run Code Online (Sandbox Code Playgroud)

此代码生成以下错误:

path.js:146
      throw new TypeError('Arguments to path.resolve must be strings');
      ^
TypeError: Arguments to path.resolve must be strings
    at Object.win32.resolve (path.js:146:13)
    at DestroyableTransform.saveFile [as _transform] (C:\paylocity\expense\node_modules\gulp\node_modules\vinyl-fs\lib\dest\index.js:36:26)
    at DestroyableTransform.Transform._read (C:\paylocity\expense\node_modules\gulp\node_modules\vinyl-fs\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:184:10)
    at DestroyableTransform.Transform._write (C:\paylocity\expense\node_modules\gulp\node_modules\vinyl-fs\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:172:12)
    at doWrite (C:\paylocity\expense\node_modules\gulp\node_modules\vinyl-fs\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:237:10)
    at writeOrBuffer (C:\paylocity\expense\node_modules\gulp\node_modules\vinyl-fs\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:227:5)
    at DestroyableTransform.Writable.write (C:\paylocity\expense\node_modules\gulp\node_modules\vinyl-fs\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:194:11)
    at Readable.ondata (_stream_readable.js:540:20)
    at Readable.emit (events.js:107:17)
    at Readable.read (_stream_readable.js:373:10)
Run Code Online (Sandbox Code Playgroud)

但是,我不能看到代码到底出了什么问题.如果我用process.stdout替换gulp.dest()然后它工作,gulp.dest()在其他调用的上下文中工作.这样做的可行方法是什么?

node.js gulp

3
推荐指数
1
解决办法
1961
查看次数

在折叠匿名类时,IntelliJ IDEA是否显示方法体?

基于IntelliJ的文档,在折叠匿名类时,您仍应该能够看到内部方法的内容.见他们的文档中的图片:

在此输入图像描述

这不是我所看到的行为.这是我看到的:

在此输入图像描述

我似乎只能折叠内部方法内容或整个匿名类主体.这只是他们的文档中的错误还是有办法实际实现这种行为?

======= 更新 =========

我接受了彼得格罗莫夫的回答,但我的版本似乎还有些不对劲.当我打开文件并默认设置折叠闭包时(文件 - >设置 - >编辑器 - >代码折叠 - >选择'默认折叠'下的'闭包'),它似乎正确折叠,如下图所示:

在此输入图像描述

请注意,展开的因子在边距中显示单个可折叠区域.关闭文件并重新打开会产生以下内容(在我折叠第一个文件后):

在此输入图像描述

首次打开文件时,这两个语句都会被扩展(问题#1).在折叠第一个语句的最外层区域之后,它会折叠整个匿名类(问题#2),而不是在我关闭文件之前它的工作方式.另请注意,我打开的第二个语句对匿名类的方法(问题#3)有一个额外的可折叠区域.这是关闭时默认折叠设置的行为方式.这里肯定有一些错误.自从我发布了这个问题以来,已经发布了一个新版本,所以问题可能只出现在我的版本(10.0.3),但据我所知,这是一个相当古老的功能.我欢迎任何解释为什么我可能会看到这些问题(包括"在我的机器上工作").

intellij-idea

1
推荐指数
1
解决办法
524
查看次数