Tag: asp.net core

将ArrayPool对象提供给JsonOutputFormatter构造函数

从.net RC2升级到RTM后,我发现需要为从ArrayPool派生的JsonOutputFormatter的构造函数提供参数。 我如何获得此对象? 我正在手动创建JsonOutputFormatter,因为我需要配置ReferenceLoopHandling。 我能找到的其他相关信息是这样的: https : //github.com/aspnet/Mvc/issues/4562 public IServiceProvider ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMemoryCache(); services.AddSession(); services.AddMvc(); var formatterSettings = JsonSerializerSettingsProvider.CreateSerializerSettings(); formatterSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; JsonOutputFormatter formatter = new JsonOutputFormatter(formatterSettings, ???); services.Configure(options => { options.OutputFormatters.RemoveType(); options.OutputFormatters.Insert(0, formatter); }); //etc… }

将查询参数绑定到ASP.NET Core中的模型

我试图使用从查询参数到对象的模型绑定进行搜索。 我的搜索对象是 [DataContract] public class Criteria { [DataMember(Name = “first_name”)] public string FirstName { get; set; } } 我的控制器有以下操作 [Route(“users”)] public class UserController : Controller { [HttpGet(“search”)] public IActionResult Search([FromQuery] Criteria criteria) { … } } 当我按如下方式调用端点时…/users/search?first_name=dave控制器操作上的criteria属性为null。 但是,我可以将端点称为蛇案例…/users/search?firstName=dave并且criteria属性包含属性值。 在这种情况下,模型绑定已经起作用,但是当我使用snake_case时却没有。 如何在模型绑定中使用snake_case?

如何在ASP.NET Core中将403 Forbidden响应作为IActionResult返回

我想在尝试执行无效操作时向客户端返回403 Forbidden。 我需要使用的方法是什么? 我搜索了互联网,但我发现只有MVC 5: 如果您的web api方法的返回类型是HttpResponseMessage,那么您需要使用以下代码: return Request.CreateErrorResponse(HttpStatusCode.Forbidden, “RFID is disabled for this site.”); Or if the return type for your web api method is IHttpActionResult then you need to use the below code return StatusCode(HttpStatusCode.Forbidden,”RFID is disabled for this site.”); 如何为IActionResult类型返回403: public IActionResult Put(string userid, [FromBody]Setting setting) { var result = _SettingsRepository.Update(userid, setting); […]

entity framework核心:私有或受保护的导航属性

是否有可能在EFCore中定义具有私有或受保护访问级别的导航属性,以使这种代码工作: class Model { public int Id { get; set; } virtual protected ICollection childs { get; set; } }

entity framework核心1.0连接字符串

我们正在开发一个不同的大型ASP.NET Core MVC 1.0应用程序。 我们的每个应用程序有4层,如下所示: DTO 存储库(entity framework – 代码优先) 服务(业务逻辑) MVC(UI-MVC) 目前,在处理所有数据库操作的存储库中,我们对DbContext中的数据库连接字符串进行了硬编码,如下所示: protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(“Data Source=somedatabase.database.windows.net;Initial Catalog=database;Integrated Security=False;User ID=username;Password=password;Connect Timeout=60;Encrypt=True;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true”); } 该项目作为独立的ASP.NET Core 1.0项目位于MVC项目之外。 它还有一个空的Program.cs文件,它似乎是执行代码到数据库命令行所必需的(dotnet ef migrations add和dotnet ef database update)。 我们在DbConext中有一个硬编码连接字符串的原因是因为当我们使用下面的代码时,在执行dotnet ef命令时,我们得到一个对象引用未设置为对象exception的实例。 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings[“StandardDatabase”].ConnectionString); } 但是,由于我们有一个Program.cs,如果我们为连接字符串添加Debug.WriteLine并运行项目,它会返回正确的连接字符串,如果我们在U​​I中的appsettings.json文件中设置连接字符串,用户界面也将成功连接。 问题:上面提到的堆栈是我们用于几个“Micro Apps”的,这意味着我们有几个连接到多个数据库的项目。 我们还希望利用Development,Staging和Production连接字符串。 如果我们使用Configuration Manager连接字符串,一切都适合日常操作; 但是,当我们想要将Entity Frameworks代码用于数据库命令行时,我们需要进入我们想要更新的每个存储库,并将DbContext更改为硬编码连接字符串,执行命令,然后将它们更改回完成时,这变得非常麻烦。 问题:我们是否只是这样做错误,是否有一种建立entity […]

entity framework7 DbContext脚手架

我正在尝试使用ASP.NET 5和Entity Framework 7为现有数据库结构生成DbContext 。毫不奇怪,没有很多关于如何轻松完成此操作的文档。 另外,我想仅仅支持上下文; 有大约900个表,我只关心它们中的一些,我不需要每个表的模型类。 我一直在使用这里指定的命令,但运气不好。 所以,我想我有两个问题: 生成的上下文文件位于何处? 我在命令提示符下运行命令没有失败,但没有其他事情发生。 我知道我至少在正确的位置,因为我可以添加不受支持的属性的旧EF6模型,它给我一个错误,他们不支持。 是否可以仅生成没有相应模型类的上下文?

MVC ICollection ValidationState始终设置为Skipped

作为ASP.NET Core MVC 1.0项目的一部分,我有一个带有ICollection属性的ViewModel。 我需要validation此集合包含一个或多个项目。 我的自定义validation属性未执行。 在我的实例中,它从multipart/form-data表单中保存多个文件附件。 我在ViewModel中使用自定义validation属性修饰了该属性: [RequiredCollection] public ICollection Attachments { get; set; } 下面是自定义属性类。 它只是检查集合不是null并且元素大于零: public class RequiredCollectionAttribute : ValidationAttribute { protected const string DefaultErrorMessageFormatString = “You must provide at least one.”; public RequiredCollectionAttribute() : base(DefaultErrorMessageFormatString) { } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var collection = (ICollection) value; return […]

.net核心dependency injection是否支持Lazy

我试图使用通用的Lazy类来实例化.net核心dependency injection扩展的昂贵类。 我已经注册了IRepo类型,但我不确定Lazy类的注册是什么样的,或者它是否支持。 作为一种解决方法,我使用了这种方法http://mark-dot-net.blogspot.com/2009/08/lazy-loading-of-dependencies-in-unity.html 配置: public void ConfigureService(IServiceCollection services) { services.AddTransient(); //register lazy } 控制器: public class ValuesController : Controller { private Lazy _repo; public ValuesController (Lazy repo) { _repo = repo; } [HttpGet()] public IActionResult Get() { //Do something cheap if(something) return Ok(something); else return Ok(repo.Value.Get()); } }

如何在ASP.Net Core MVC中创建级联SelectList

我使用相同的模型值在不同的应用程序中工作,但这次我遇到了一个问题。 我想要实现的是,当我在一个SelectList选择一个值时,不同的值中的值会发生变化。 这目前无效。 说我有以下型号: public class DashboardChartsByMonthModel { … public SelectList TimeSliceList { get; set; } public TimeSlice TimeSliceVal { get; set; } // Timeslice is an Enum containing “ByMonth” and “ByQuarter” public SelectList StartQuarterList { get; set; } public string StartQuarter { get; set; } public SelectList StartMonthList { get; set; } public string […]

.Net Core 2.1 – 无法访问已处置的对象。对象名称:’IServiceProvider’

我刚刚将.NET Core 2.0迁移到.NET Core 2.1。 一切都很顺利,但是当我尝试登录时,我得到了以下错误: $ exception {System.ObjectDisposedException:无法访问已处置的对象。 对象名称:’IServiceProvider’。 这发生在这段代码中: public class AppContractResolver : DefaultContractResolver { private readonly IServiceProvider _services; public AppContractResolver(IServiceProvider services) { _services = services; } protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) { var httpContextAccessor = _services.GetService(); var user = httpContextAccessor.HttpContext.User; List properies = base.CreateProperties(type, memberSerialization).ToList(); properies = FilterOneClaimGranted(type, properies, user); […]