Tag: asp.net core

更新到vs2017.3后,不会触发断点

我们有一个运行在Vs2017.3上的asp.net核心2.0项目(从1.x迁移)(从2017年更新)。 更新后,断点不再被击中。 Vs报告“断点当前不会被命中。源代码与原始版本不同”。 在更新和迁移之前,情况正常。 更新到2017.3之后以及迁移到asp.net core 2.0之前,可以看到此问题。 我知道解决方法:右键单击并强制断点,即使源代码不同也是如此。 我需要一个解决方案。 清洁重建无效。 多台计算机上出现此问题。

如何自定义ASP.Net Core模型绑定错误?

我想从Web API(Asp.net Core 2.1)返回标准化的错误响应,但我似乎无法弄清楚如何处理模型绑定错误。 该项目只是从“ASP.NET Core Web Application”>“API”模板创建的。 我有一个简单的动作定义为: [Route(“[controller]”)] [ApiController] public class MyTestController : ControllerBase { [HttpGet(“{id}”)] public ActionResult Get(Guid id) { return new TestModel() { Greeting = “Hello World!” }; } } public class TestModel { public string Greeting { get; set; } } 如果我使用无效的Guid请求此操作(例如, https://localhost:44303/MyTest/asdf ),我会收到以下响应: { “id”: [ “The value ‘asdf’ […]

SignInAsync vs AuthenticateAsync

我终于通过JWT令牌认证工作获得了登录方法。 我在这里打电话 await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, ClaimsPrincipalFactory.CreatePrincipal(claims), authProps); 我也打过电话 await HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme); 在示例中,我读到我只需要SignInAsync 。 所以我测试了它并删除了AuthenticateAsync 。 但是, User.Identity.IsAuthenticated仍然返回true 。 是否可以删除AuthenticateAsync ? 还是我还需要它? 它为什么存在? AuthenticateAsync的文档字符串仅表示用于validation的扩展方法

Http错误的自定义错误页面404.13 ASP.NET Core MVC

我对ASP.NET和MVC一般都是新手; 我一直在将ASP.NET MVC应用程序迁移到ASP.NET MVC Core。 在前一个框架中,我能够处理以下臭名昭着的错误的HttpException: HTTP错误404.13 – 未找到 请求过滤模块被配置为拒绝超过请求内容长度的请求。 我知道我可以增加允许的最大长度,默认情况下目前为30MB,但我的目标是向用户提供一个友好的错误页面,解释刚刚发生的事情,而不是增加允许的限制。 在ASP.NET上,我使用Global.asax上的以下代码完成了此操作: private void Application_Error(object sender, EventArgs e) { var ex = Server.GetLastError(); var httpException = ex as HttpException ?? ex.InnerException as HttpException; if (httpException == null) return; if (httpException.WebEventCode == WebEventCodes.RuntimeErrorPostTooLarge) { //handle the error Response.Redirect(“~/Error/UploadTooLarge”); //Redirect to my custom error page } } […]

从ASP.NET Core 1.1 MVC迁移到2.0后,自定义cookie身份validation无法正常工作

我已经将ASP.NET Core 1.1 MVC项目迁移到ASP.NET Core 2.0,现在我注意到对应用程序的未授权部分的请求不再导致“401 Unauthorized”响应,而是导致响应的代码exception“ 500内部服务器错误”。 日志文件的示例摘录(John Smith无权访问他尝试访问的控制器操作): 2018-01-02 19:58:23 [DBG] Request successfully matched the route with name ‘”modules”‘ and template ‘”m/{ModuleName}”‘. 2018-01-02 19:58:23 [DBG] Executing action “Team.Controllers.ModulesController.Index (Team)” 2018-01-02 19:58:23 [INF] Authorization failed for user: “John Smith”. 2018-01-02 19:58:23 [INF] Authorization failed for the request at filter ‘”Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter”‘. 2018-01-02 19:58:23 [INF] Executing […]

asp5 IConfigurationRoot获取json数组

我正在尝试向我的asp 5 mvc 6 web应用程序(“rc1-final”库)提供一些额外的配置数据,以便部署在Azure上。 此附加数据的一部分由json文件中的数据数组组成。 我可以将这个json文件添加到我的配置中,并且在调试时如果我观察配置对象,我可以浏览到提供程序条目并看到它确实联系了我正在寻找的数据数组。 但是,尝试Configuration[“extraData”]产生null(因为该属性的“值”为null,即使它显然包含元素数组。 我没有问题访问存储在json配置中的单个值(例如我的数据库连接字符串和其他值。)看起来好像不支持数组格式的json数据? 请参阅以下示例json文件(根据jsonlint进行validation,对我来说似乎很好)… //extraData.json { “ExtraData”: [ { “Id”: 1, “Description”: “The first identifier” }, { “Id”: 2, “Description”: “The second identifier” }, { “Id”: 3, “Description”: “The third identifier” } ] } …以及以下示例Startup.cs … //Startup.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; […]

ASP.NET VNext调试MVC源代码

我跟随了Imran Baloch的博客文章,在那里他展示了如何调试ASP.Net MVC VNext。 我在安装了Vs 2014的Azure中使用了一个VM。 我创建了全局解决方案文件夹并在其中放置了一个global.json文件,我在其中指定了包含从https://github.com/aspnet/Mvc/tree/dev/src克隆的当前MVC源的文件夹。 当我尝试编译解决方案时,由于缺少引用,我得到了很多错误。 有人试过博客文章中提出的方法吗? 我究竟做错了什么?

AuthorizationOptions上的dependency injection

我正在为我的ASP.NET 5 MVC应用程序创建授权规则/策略。 创建它很简单,很容易做到,它正在工作(我的基本测试)。 但是,我现在需要将我的数据上下文纳入需求。 我在IAuthorizationRequirement实现中创建了一个构造函数,它接受一个实现DbContext的MyContext对象。 我正在我的Startup.cs文件中注册IAuthorizationRequirement。 services.Configure(options => { options.AddPolicy(“AllowProfileManagement”, policy => policy.Requirements.Add( new AllowProfileManagementRequirement(new MyRepository(new MyContext())))); }); 不幸的是,当我的规则运行时, MyContext不知道所使用的连接字符串(在Startup.cs更远): services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => options.UseSqlServer(Configuration[“Data:DefaultConnection:ConnectionString”])); 我正在使用DI这些类型(并且它正在工作)。 services.AddTransient( provider => new MyRepository(provider.GetRequiredService())); 我知道我在做什么是不对的,但我不知道如何做到这一点,以便DI被用于所有事情。

如何在Asp.Net Core中设置日期绑定的文化?

我有一个带MVC的Asp.Net Core应用程序。 我正在提交表格上有日期的表格。 表格看起来(大致)像这样: @model EditCustomerViewModel 控制器动作是: [HttpPost] public async Task Edit(EditCustomerViewModel viewModel) { // do stuff return RedirectToAction(“Index”); } 查看模型是: public class EditCustomerViewModel { public Guid Id { get; set; } [DataType(DataType.Date)] public DateTime ServiceStartDate { get; set; } [DataType(DataType.Date)] public DateTime? ServiceEndDate { get; set; } // etc. } 我在英国,因此日期不是美国格式: dd/MM/YYYY 。 所以默认我提交6/22/2017 […]

在单独的项目Asp.net Core MVC中进行本地化

我刚刚升级到Rc2,而以前的工作不再适用。 我在一个单独的项目中有几个resx文件,我使用自定义类来访问数据。 现在运行时出现以下错误: MissingManifestResourceException:找不到适合指定文化或中性文化的任何资源。 确保在编译时将“GarageWeb.Core.CoreResources.resources”正确嵌入或链接到程序集“GarageWeb.Core”中,或者所有所需的附属程序集都是可加载和完全签名的。 编辑:我简化了这一点,并创建了一个控制台应用程序,除了重现错误所需的一切,所以除去了所有内容: https : //github.com/GarageWeb/ResourceTest 这是访问资源的类: public class ResourceService : IResourceService { private readonly ILoggingService _loggingService; private readonly ICoreGlobalResourceService _coreGlobalResources; private readonly ISiteGlobalResourceService _siteGlobalResources; public ResourceService(ILoggingService loggingService, ICoreGlobalResourceService coreGlobalResourceService, ISiteGlobalResourceService siteGlobalResources) { _loggingService = loggingService; _coreGlobalResources = coreGlobalResourceService; _siteGlobalResources = siteGlobalResources; } public string GetGlobalText(string resourceKey, bool includeBrackets = true) { […]