问题标签 [asp.net-core-1.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
175 浏览

asp.net-core - Startup.cs 中基于操作系统配置服务的基于约定的方法

我最近在 coreclr (x64) 上使用 1.0.0-rc1-update1 创建了一个 ASP.NET 服务。因此,该服务能够在所有受支持的操作系统上运行;很酷!我的服务只公开了一个简单的“TODO”API 并使用了 Entity Framework 7.0 ORM。对于持久性,它在 Linux 上使用 Sqlite DB,在 Windows 上使用 SQL Server DB。

我想知道是否有一种基于约定的方法来允许 Startup.cs 为各种操作系统处理不同的服务配置?例如,我的 EF 配置不同,因为它在 Linux 上使用 Sqlite,在 Windows 上使用 SQL Server。

以下文章确实详细介绍了一些基于约定的配置方法,但它似乎只允许对“开发”、“暂存”、“生产”环境的更高级别抽象使用不同的方法: https ://docs.asp.net/ en/latest/fundamentals/environments.html

目前,我只是在 Startup.cs 的构造函数中注入 IRuntimeEnviroment 并保存它。然后,当调用 ConfigureServices 时,我检查 IRuntimeEnvironment 的 OperatingSystem 属性并相应地调整 EF 配置(下面提供了我的完整 Startup.cs)...

任何关于其他(或推荐)方法的指导将不胜感激。

0 投票
4 回答
4509 浏览

c# - ASP.NET CORE 1.0,来自另一个程序集的 AppSettings

我有一个应用程序分为两个项目:一个 Web 应用程序和一个类库。Startup仅在 Web 应用程序中:

我想在该类库中拥有我的 appsettings.json 并从那里加载。那可能吗?我怎样才能做到这一点?

0 投票
2 回答
2080 浏览

asp.net-mvc-routing - ASP.NET Core 1.0 中的属性路由

我是否需要配置任何东西才能在 ASP.NET Core 1.0 应用程序中使用属性路由?

以下似乎对我不起作用。当我转到 localhost:132/accounts/welcome 时,我希望使用此方法

0 投票
5 回答
47110 浏览

asp.net-core - ASP.NET Core 中的基本身份验证

问题

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

笔记

  • 在 MVC 5 中,我使用了本文中的说明,需要在WebConfig.

  • 我仍在部署我的新MVC Core应用程序,IIS但这种方法似乎不起作用。

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

0 投票
2 回答
1685 浏览

c# - ASP.NET Core 1.0 异常过滤器不能让它返回 404

我一直试图通过简单地返回 404 来使异常过滤器工作。不幸的是,它似乎根本没有返回 404,而是抛出了 500。

API 控制器:

自定义异常服务:

异常过滤器属性:

在此处输入图像描述

0 投票
3 回答
9197 浏览

middleware - Entity Framework Core 1.0 工作单元与 Asp.Net Core 中间件或 Mvc 过滤器

我将 EF Core 1.0(以前称为 EF7)和 ASP.NET Core 1.0(以前称为 ASP.NET 5)用于 RESTful API。

我希望将某个工作单元限定为 http 请求,以便在响应 HTTP 请求时,对 DbContext 所做的所有更改都将保存到数据库中,或者不保存(如果有一些例外,例如)。

过去,我通过使用一个动作过滤器将 WebAPI2 与 NHibernate 一起用于此目的,在该过滤器中,我在执行动作时开始事务,并在执行动作时结束事务并关闭会话。这是http://isbn.directory/book/9781484201107推荐的方式

但是现在我正在使用 Asp.Net Core(尽管这不应该是相关的,但使用 Asp.Net Core Mvc)和 Entity Framework,据我所知,它已经实现了一个工作单元。

我认为将中间件插入 ASP.NET 管道(在 MVC 之前)将是正确的做事方式。所以一个请求会去:

管道 ASP.NET:MyUnitOfWorkMiddleware ==> MVC 控制器 ==> 存储库 ==> MVC 控制器 ==> MyUnitOfWorkMiddleware

如果没有发生异常,我正在考虑让这个中间件保存 DbContext 更改,这样在我的存储库实现中我什至不需要做dbcontext.SaveChanges(),一切都像集中交易。在伪代码中,我猜它会是这样的:

这有意义吗?有没有人有类似的例子?我找不到任何好的做法或建议。

此外,如果我在 MVC 控制器级别使用这种方法,我将无法在 POST 新资源时访问数据库创建的任何资源 ID,因为在保存 dbContext 更改之前不会生成 ID(稍后在管道中在控制器完成执行后在我的中间件中)。如果我需要访问控制器中新创建的资源 ID 怎么办?

任何建议将不胜感激!

更新 1我发现使用中间件实现此目的的方法存在问题,因为中间件中的 DbContext 实例与 MVC(和存储库)生命周期中的实例不同。请参阅问题Entity Framework Core 1.0 DbContext not scoped to http request

更新2我还没有找到一个好的解决方案。到目前为止,基本上这些是我的选择:

  1. 尽快将更改保存在 DB 中。这意味着将其保存在存储库实现本身上。这种方法的问题在于,对于 Http 请求,我可能想使用多个存储库(即:将某些内容保存在数据库中,然后将 blob 上传到云存储)并且为了拥有一个工作单元,我必须实现一个处理多个实体甚至多个持久性方法(DB 和 Blob 存储)的存储库,这违背了整个目的
  2. 实现一个动作过滤器,我将整个动作执行包装在一个数据库事务中。在控制器的动作执行结束时,如果没有异常,我将 chanches 提交给 DB,但如果有异常,我会回滚并丢弃上下文。这样做的问题是我的控制器的操作可能需要生成的实体 ID 才能将其返回给 http 客户端(即:如果我得到一个 POST /api/cars 我想返回一个 201 Accepted 并带有一个标识的位置标头在 /api/cars/123 创建的新资源和 ID 123 尚不可用,因为该实体尚未保存在 DB 中且 ID 仍为临时 0)。控制器对 POST 动词请求的操作示例:

    return CreatedAtRoute("GetCarById", new { carId= carSummaryCreated.Id }, carSummaryCreated); //carSummaryCreated.Id would be 0 until the changes are saved in DB

我怎样才能将整个控制器的操作包装在数据库事务中,同时获得数据库生成的任何 Id 以便在控制器的 Http 响应中返回它?或者..一旦提交了数据库更改,是否有任何优雅的方法可以覆盖 http 响应并将 Id 设置为操作过滤器级别?

更新 3:根据nathanaldensr的评论,我可以通过使用生成的代码获得两全其美(将我的控制器的操作执行包装在 DB 事务中_UoW 并知道甚至在 DB 提交更改之前创建的新资源的 Id) Guid 依赖于数据库来生成 Guid。

0 投票
2 回答
7208 浏览

webforms - ASP.Net Core 1.0 是否支持 WebForm 项目

ASP.Net Core 1.0是否支持 .Net WebForm 项目?或者它只是一个 MVC 环境?我也可以在那里创建经典的 Web 服务(asmx)吗?

0 投票
1 回答
2443 浏览

asp.net-core-mvc - Entity Framework Core 1.0 DbContext 未限定为 http 请求

我通过观看 Rowan Miller https://channel9.msdn.com/Series/Whats-New-with-ASPNET-5/06 (第 22 分钟)的视频了解 了配置 Entity Framework Core(以前称为 EF7)的方式) 导入到 ASP.NET Core 1.0 应用程序(以前称为 ASP.NET 5)中Startup.cs,如下所示:

并且这个 DbContext 将被限定为一个 http 请求,因此无论何时在整个 http 管道(包括中间件或 MVC)的代码中使用 DbContext,我们都可以肯定地知道 DI 容器注入的实例将是相同的。

但问题是它似乎不是那样工作的。在 MVC 的生命周期内,注入的 DbContext 实例确实是相同的,但如此处所述:Entity Framework Core 1.0 unit of work with Asp.Net Core middleware or Mvc filter 我正在尝试将以下中间件插入管道在控制器完成执行后实现某种集中的提交/回滚:

并且这个中间件在管道中就在 MVC6 之前

我的中间件中的 DbContext 实例与在 MVC 生命周期内注入的实例不同

这是预期的吗?不应该将 DbContext 限定为 http 请求吗?有可能实现我想要实现的目标吗?

B 计划是使用MVC 6 全局过滤器(如果我能找到一些关于如何执行此操作的文档)。我假设作为 MVC 6 框架的一部分,注入的 DbContext 实例将是相同的。

0 投票
3 回答
4174 浏览

asp.net-core - Asp.net core 1.0 和 .net core 1.0 教程

如何开始使用带有 .net core 1.0 的 Asp.net core 1.0。请推荐一些教程。我想在linux上开发和部署。

0 投票
5 回答
18040 浏览

c# - Configuring AutoMapper 4.2 with built in IoC in ASP.NET Core 1.0 MVC6

I am trying to figure out the proper way to configure AutoMapper in my application's Startup.cs file and then use it throughout my application.

I am trying to use this documentation which somewhat explains how to still give AutoMapper a static feel without the old static API. The example uses StructureMap.

I would like to know how I can do something similar, but in a Core 1.0 app using the built in services container.

I am assuming that in the Configure function I would configure AutoMapper and then in the ConfigureServices function I would add it as a transient.

I am assuming in the end the cleanest and most proper way to do this is using dependency injection. Here is my current attempt but it is not working:

Startup.cs

In my controller:

It just isn't working at all... I must be missing some step or doing something wrong.