Tag: asp.net core

在ASP.NET 5和MVC 6中从Web项目中分离启动配置的最佳方法

使用MVC5,创建一个引用所有层的引导程序项目非常容易,从而将UI层与对基础架构逻辑的引用分离开来。 该项目将包含启动配置逻辑,例如设置IoC容器。 这样做的方法是定义一个启动类: public class Startup { public static void Start() { // startup configuration (IoC etc) goes here } } 然后在AssemblyInfo.cs添加一行: [assembly: PreApplicationStartMethod(typeof(Startup), “Start”)] 不幸的是,这种方法不再适用于asp.net 5.我简要介绍了文档,但我发现的只是框架在Web项目中查找名为Startup的类。 我还看了一下Microsoft.AspNet.Hosting 源代码 ,它似乎负责查找Startup类。 我可以看到对配置类的一些引用,因此有可能通过使用某种配置设置来加载程序集,但我无法确认或确定哪个设置。 此外,如果这是真的,当在Startup类中加载文件本身时,如何使用config.json文件确定Startup类? 是否有不同的配置启动程序集的选项,例如使用环境变量?

ASP.NET 5针对两个或多个策略进行授权

是否可以针对两个或更多策略应用授权? 我使用的是ASP.NET 5,rc1。 [Authorize(Policy = “Limited,Full”)] public class FooBarController : Controller { // This code doesn’t work } 如果没有,我如何在不使用政策的情况下实现这一目标 有两组用户可以访问此控制器:“完整”和“有限”。 用户可以属于“完整”或“有限”,或两者都属于。 它们只需要属于两个组中的一个以访问该控制器。

entity framework核心创建和更新字段

我的所有实体都有四个自定义字段。 这四个字段是CreatedBy , CreatedDate , UpdatedBy和UpdatedDate 。 有没有办法挂钩到Entity Framework核心事件,以便在插入时它将使用当前用户填充当前DateTime和CreatedBy的CreatedDate ? 当数据库有更新时,它会使用当前用户填充当前DateTime和UpdatedBy吗?

.net-coredependency injection

我有一个Generic存储库,我想注册DI,它实现了一个接口IRepository。 通常我会像这样创建一个它的实例: IRepository repo = new Repository(); 但是我试图在发布之前加速.net 5,并希望将其与DI一起使用,我采用了以下方法: services.AddTransient<DAL.IRepository, DAL.Repository>(); 但这感觉不对,我不希望在我的模型中的每个类中都有50多行… 我在网上找不到任何关于此的内容,我知道它可能与其他ioc容器有关..但由于这是一个学习项目,我不想使用另一个容器,我的目标是用.net5s本机容器来完成所有这些。

将google idToken替换为本地openId令牌c#

我正在使用这个github项目https://github.com/openiddict/openiddict-core这很棒。 但是,当用户使用外部身份提供商时,我会被困在程序应该是什么,或者如何实现它们,对于这个例子,我将使用谷歌。 我有一个angular2 app运行,带有aspnet核心webAPI。 我的所有本地登录工作都很完美,我使用用户名和密码调用connect/token ,并返回accessToken。 现在我需要将谷歌作为外部身份提供商实施。 我已按照此处的所有步骤实施Google登录按钮。 这会在用户登录时打开一个弹出窗口。这是我为google按钮创建的代码。 // Angular hook that allows for interaction with elements inserted by the // rendering of a view. ngAfterViewInit() { // check if the google client id is in the pages meta tags if (document.querySelector(“meta[name=’google-signin-client_id’]”)) { // Converts the Google login button stub to an actual button. […]

ASP.NET Core 2.0中缺少声明转换支持

我在我的新asp.net核心2.0 api应用程序中使用JWT Bearer auth并希望为当前身份添加一些额外声明。 这个额外的信息位于需要查询的另一个api中。 我的理解是,索赔转换将是适当的地方。 在.net核心1.1中,您在Microsoft.AspNetCore.Authentication nuget包中有IClaimsTransformer接口,但我无法在我的.net核心2.0应用程序中安装此接口。 是否有另一种方法来转换asp.net core 2.0中的声明,这是我的用例的正确方法吗?

ASP.NET Core RC2和.NET 4.5.1应用程序之间的共享cookie身份validation

我们有两个运行共享cookie身份validation的.NET应用程序。 一个是ASP.NET Core RC1应用程序,另一个是经典的.NET 4.5.1应用程序。 这是使用Startup.cs的Configuration方法中过时的Microsoft.Owin.Security.Cookies.Interop Configuration的: 这工作正常,但不支持RC2的方法。 我们如何才能使用RC2的共享cookie身份validation?

.Net Core 2.0中的Windows和匿名身份validation

我正在尝试在.Net Core 2.0空Web应用程序中混合使用Windows和匿名身份validation。 我想避免[Authorize]属性,因为我不想使用Mvc或控制器。 我的设置如下: 我创建了一个空的.Net Core 2.0 Web应用程序 我去项目属性 – >调试 – >选中“启用Windows身份validation”并禁用“启用匿名身份validation”。 现在“windowsAuthentication”:true和“anonymousAuthentication”:false出现在我的“IIS”下的launchSettings.json中。 在Startup.cs中,我在ConfigureServices中添加了services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme); 如https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x#windows-authentication-httpsys–iisintegration中所述 我添加了一个简单的Console.WriteLine(context.User.Identity.Name); 看到它在app.Run内部工作,并且……一切正常! 但是……一旦我在launchSettings.json中将“anonymousAuthentication”设置为true,它就会停止工作,我无法弄清楚我可以做些什么来使Windows身份validation与它一起工作。 Context.User.Identity.IsAuthenticated始终为false。 正如您所看到的,我的配置非常简单,我需要它保持这种状态。 我想在某些动态路由上启用/禁用Windows身份validation,因此使用具有[Authorize]属性的控制器不是一个选项。 我想要实现的是一个简单的应用程序,其中url“/ authenticated”将使用context.User.Identity.Name的值进行回复,并且url“/ public”将回复类似“这是一个公共页面”的内容!”。 类似于ASP.NET Core中特定路由上的NTLM身份validation,但没有[Authorize]属性和控制器。 资源非常稀缺……任何人都知道我可能会缺少什么? 谢谢!

从vNext中的appsetting.json读取启动外的连接字符串

我有一个项目类(Nuget Package)。 我需要在没有构造函数的静态类中读取我的连接字符串到MongoDB。 静态类方法: /// /// The default key MongoRepository will look for in the appsettings.json /// private const string DefaultConnectionstringName = “Data:MongoDB:MongoServerSettings”; /// /// Retrieves the default connectionstring from appsettings.json /// /// Returns the default connectionstring from the App.config or Web.config file. public static string GetDefaultConnectionString() { var config = new Configuration(); return config.Get(DefaultConnectionstringName); […]

将响应标头添加到ASP.NET核心中间件

我想像这样在我的ASP.NET Core WebApi中添加一个处理时中间件 public class ProcessingTimeMiddleware { private readonly RequestDelegate _next; public ProcessingTimeMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { var watch = new Stopwatch(); watch.Start(); await _next(context); context.Response.Headers.Add(“X-Processing-Time-Milliseconds”, new[] { watch.ElapsedMilliseconds.ToString() }); } } 但这样做会引发exception System.InvalidOperationException: Headers are readonly, reponse has already started. 如何在响应中添加标头?