标签: asp.net-core-mvc

ASP.NET Core MVC:如何将原始JSON绑定到没有类型的字符串?

类似这种关于ASP.NET之前老版本的问题,我希望得到一个HTTP POST请求体被绑定到一个字符串.value当ASP.NET调用我的控制器方法时,似乎该方法绑定,但是为null:

namespace Demo.Controllers
{

    [Route("[controller]")]
    public class WebApiDemoController : Controller
    {
    ...

    // POST api/values
    [HttpPost]
    public System.Net.Http.HttpResponseMessage Post([FromBody]string value)
    {
       // expected: value = json string, actual: json = null.
    }
Run Code Online (Sandbox Code Playgroud)

我还需要从溪流中抓住身体吗?或者这应该工作吗?在测试上述方法时,我使用了以下http标头:

Accept: Application/json
Content-Type: Application/json;charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

我在身体中传递以下内容: { "a": 1 }

我不想绑定到名为a的字符串变量.我想绑定任何我得到的JSON,然后我想在我的方法中使用JSON内容,任何任意内容.

如果我理解了文档,该[FromBody]属性应该已经完成​​了我想要的,但我猜测ASP.NET核心MVC绑定机制不会将json绑定到"字符串值",但也许我可以做其他事情让我获得同等程度的灵活性.

类似的问题在这里给了我一个想法,也许我应该写[FromBody] dynamic data而不是使用[FromBody] string value.

更新:在执行此操作之前应该考虑这种技巧,因为如果您希望.net核心框架为您处理JSON和XML编码,那么您刚刚杀死了该功能.某些类型的REST服务器可以并且通常具有支持XML和JSON内容类型的要求,至少我遇到过具有标准文档的内容类型.

c# asp.net-mvc asp.net-web-api asp.net-core-mvc

46
推荐指数
5
解决办法
4万
查看次数

增加Asp.Net核心中的上传文件大小

目前,我正在使用Asp.Net Core和MVC6需要上传文件大小无限制.我搜索了它的解决方案,但仍未得到实际的答案.

我试过这个链接

如果有人有任何想法请帮助.

谢谢.

asp.net-core-mvc asp.net-core

46
推荐指数
8
解决办法
4万
查看次数

使用多个JWT承载认证

是否有可能在ASP.NET Core 2中支持多个JWT令牌发行者?我想为外部服务提供API,我需要使用两个JWT令牌源 - Firebase和自定义JWT令牌发行者.在ASP.NET核心中,我可以为Bearer身份验证方案设置JWT身份验证,但仅限于一个权限:

  services
        .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.Authority = "https://securetoken.google.com/my-firebase-project"
            options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer = "my-firebase-project"
                    ValidateAudience = true,
                    ValidAudience = "my-firebase-project"
                    ValidateLifetime = true
                };
        }
Run Code Online (Sandbox Code Playgroud)

我可以有多个发行人和受众,但我不能设置多个权限.

jwt asp.net-core-mvc firebase-authentication asp.net-core-2.0

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

.NET Core中HostingEnvironment.QueueBackgroundWorkItem的替代解决方案

我们正在使用.NET Core Web Api,并寻找一种轻量级解决方案,将具有可变强度的请求记录到数据库中,但不希望客户端等待保存过程.
不幸的是,没有HostingEnvironment.QueueBackgroundWorkItem(..)实施dnx,Task.Run(..)也不安全.
有没有优雅的解决方案?

background-process asp.net-core-mvc .net-core dnx asp.net-core

44
推荐指数
4
解决办法
9459
查看次数

TagHelper用于将路由值作为链接的一部分传递

在指定asp-controllerasp-action链接时,传递id属性的语法是什么?

例如,如果我想链接到给定对象的编辑URL,则所需的URL将是/user/edit/5例如.

有没有一种方法可以使用TagHelper实现这一目标,还是我们仍然需要回归@Html.ActionLink()

asp.net-core-mvc tag-helpers asp.net-core

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

新ASP.NET MVC 6标识中AspNetUsers表中ConcurrencyStamp列的用途是什么?

新ASP.NET MVC 6标识中表中ConcurrencyStamp列的用途是什么AspNetUsers

这是AspNetUsers表的数据库模式:

在此输入图像描述

它也在AspNetRoles表中:

在此输入图像描述

我记得在ASP.NET MVC 5中没有它.

到目前为止我注意到它似乎有GUID值,因为它使用以下代码定义:

/// <summary>
/// A random value that must change whenever a user is persisted to the store
/// </summary>
public virtual string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();
Run Code Online (Sandbox Code Playgroud)

但是这个文档不足以让我理解它在哪种情况下使用.

asp.net-mvc concurrency identity database-schema asp.net-core-mvc

43
推荐指数
4
解决办法
2万
查看次数

ASP.NET核心中的基本身份验证

如何在ASP.NET Core Web应用程序中实现具有自定义成员身份的基本身份验证?

笔记

  • 在MVC 5中,我使用了本文中的说明,该说明需要在中添加模块WebConfig.

  • 我仍在部署我的新MVC Core应用程序,IIS但这种方法似乎无法正常工作.

  • 我也不想使用内置的IIS支持基本身份验证,因为它使用Windows凭据.

basic-authentication asp.net-core-mvc asp.net-core asp.net-core-1.0

43
推荐指数
5
解决办法
3万
查看次数

如何覆盖ASP.NET Core Identity的密码策略

默认情况下,ASP.NET Core Identity的密码策略至少需要一个特殊字符,一个大写字母,一个数字,......

我该如何更改此限制?

文档中没有任何内容(https://docs.asp.net/en/latest/security/authentication/identity.html)

我尝试覆盖Identity的用户管理器,但我没有看到哪个方法管理密码策略.

public class ApplicationUserManager : UserManager<ApplicationUser>
{
    public ApplicationUserManager(
        DbContextOptions<SecurityDbContext> options,
        IServiceProvider services,
        IHttpContextAccessor contextAccessor,
        ILogger<UserManager<ApplicationUser>> logger)
        : base(
              new UserStore<ApplicationUser>(new SecurityDbContext(contextAccessor)),
              new CustomOptions(),
              new PasswordHasher<ApplicationUser>(),
              new UserValidator<ApplicationUser>[] { new UserValidator<ApplicationUser>() },
              new PasswordValidator[] { new PasswordValidator() },
              new UpperInvariantLookupNormalizer(),
              new IdentityErrorDescriber(),
              services,
              logger
            // , contextAccessor
              )
    {
    }

    public class PasswordValidator : IPasswordValidator<ApplicationUser>
    {
        public Task<IdentityResult> ValidateAsync(UserManager<ApplicationUser> manager, ApplicationUser user, string password)
        {
            return Task.Run(() =>
            {
                if (password.Length >= 4) …
Run Code Online (Sandbox Code Playgroud)

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

43
推荐指数
4
解决办法
2万
查看次数

远离Bower(已停产)使用Yarn/Npm(.Net Core MVC)VS2017

我大约1年前开始研究.Net Core应用程序.我使用.Net Core在visual studio中设置我的项目,并使用Bower来管理我的客户端软件包.似乎bower维持/停止和"负责人"建议使用yarnwebpack代替.

所以我的问题是如何开始使用yarn而不是bower?(如果更合适,则为npm)

当我开始我的项目时,我通过输入以下内容从Visual Studio包管理器中使用了bower:

bower install <package-name>
Run Code Online (Sandbox Code Playgroud)

它设法在我的wwwroot/lib/文件夹中安装文件/目录.我只需要为我添加依赖项_Layout.cshtml,一切都完美无缺.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"
    asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
    asp-fallback-test="window.jQuery">
</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
    asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
    asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
</script>
Run Code Online (Sandbox Code Playgroud)

我发现很难弄清楚如何使用yarn或npm在Visual Studio 2017中实现相同的"简单性".我已经可以通过BundlerMinifier.CoreNuGet包访问缩小文件了,我相信它会自动为我的文件中的文件做到,所以这不是我想要使用的解决方案的要求.

我试过谷歌搜索,但似乎这不是一个非常普遍的问题.我找到的所有链接建议使用npm并设置gulp来移动文件wwwroot/lib/,我尝试了但是我在这样做时遇到了一些奇怪的错误.

我如何使用yarn与我相似的方式安装软件包bower?或者我应该使用npm

npm bower asp.net-core-mvc yarnpkg visual-studio-2017

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

如何在Visual Studio 2015中保存编译.less文件(预览)

好的,所以我在Visual Studio 2015 Preview中创建了一个新的ASP.Net 5/ MVC 6项目.为了与我们当前的做事方法保持一致,为了造型,我想使用.less文件.创建文件非常简单,但Web Essentials不再编译它们.

所以我的问题是:.css在保存.less文件时,我需要做些什么才能生成文件?

根据我的冒险经历使得Typescript工作得很好,我将不得不用来Grunt完成这项任务,但我对Grunt来说是全新的,所以我不确定如何做到这一点?

请帮忙!

less gruntjs asp.net-core-mvc visual-studio-2015 asp.net-core

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