Tag: asp.net core

dependency injection,注入参数

我正在使用DI的vNext实现。 如何将参数传递给构造函数? 例如,我有课: public class RedisCacheProvider : ICacheProvider { private readonly string _connectionString; public RedisCacheProvider(string connectionString) { _connectionString = connectionString; } //interface methods implementation… } 和服务注册: services.AddSingleton(); 如何将参数传递给RedisCacheProvider类的构造函数? 例如Autofac: builder.RegisterType() .As() .WithParameter(“connectionString”, “myPrettyLocalhost:6379”);

ASP.NET Core 2.0 Preview 1:如何使用自定义登录路径设置Cookie身份validation

在ASP.NET Core 2.0中,.UseAuthentication()中间件有一个重大更改,不再允许此处提到的旧语法工作。 新版本似乎在addAuthentication中处理配置,但我无法在任何地方找到有关如何更改指定自定义登录和注销URL的旧代码的任何详细信息。 services.AddAuthentication(o => { // Where can I specify this????? var opt = new CookieAuthenticationOptions() { LoginPath = “/api/login”, LogoutPath = “/api/logout”, }; o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; o.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; }); 任何帮助,将不胜感激…

我在哪里可以记录ASP.NET Core应用程序的启动/停止/错误事件?

在旧的ASP.NET中,在Global.asax.cs类中,我会在应用程序启动时停止,停止并抛出未处理的exception: Application_Start() Application_End() Application_Error() 我如何在ASP.NET Core中执行相同的操作? 它有一个Startup类,但它用于配置。 我在哪里挂钩应用程序的开始/停止/错误事件?

ASP.NET 5启动应用程序时发生错误

发布ASP.NET Web App后,我正在尝试在本地服务器上托管该网站。 但是,当我启动它时,它在我的浏览器中给出了这个错误: 哎呀。 500内部服务器错误启动应用程序时发生错误。 如何调试此错误是什么? 在Visual Studio中开始使用IISExpress和“web”时,该网站可以工作(包括调试和发布配置)。 我正在使用开发环境,我已经指定了app.UseDeveloperExceptionPage(); 。 我已按照此处的说明部署到IIS。 我也尝试过这里提出的建议(选择“删除发布前删除所有现有文件”重新发布)。 (OP有一个稍微不同的错误,所以这就是我发布一个新问题的原因。) 我在网上看了几个小时,但似乎没有太多关于它的内容。 有任何想法吗? 我在Windows 7上,使用ASP.NET 5 RC1。

validationGoogle Id令牌

我正在使用ASP.NET Core为Android客户端提供API。 Android以Google帐户登录,并将ID令牌JWT传递给API作为持票人令牌。 我有应用程序工作,它确实通过了身份validation检查,但我不认为它正在validation令牌签名。 根据Google的文档,我可以将此url称为https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123 ,但我无法在服务器端找到相应的挂钩来执行此操作。 另外根据Google文档,我可以以某种方式使用客户端访问API来执行此操作,而无需每次都调用服务器。 我的配置代码: app.UseJwtBearerAuthentication( new JwtBearerOptions() { Authority = “https://accounts.google.com”, Audience = “hiddenfromyou.apps.googleusercontent.com”, TokenValidationParameters = new TokenValidationParameters() { ValidateAudience = true, ValidIssuer = “accounts.google.com” }, RequireHttpsMetadata = false, AutomaticAuthenticate = true, AutomaticChallenge = false, }); 如何让JWTBearer中间件validation签名? 我已经接近放弃使用MS中间件并自己动手了。

如何从Startup.cs中编写日志

为了调试在启动时失败的.net核心应用程序,我想从startup.cs文件中编写日志。 我在文件中有日志设置,可以在startup.cs文件之外的应用程序的其余部分中使用,但不知道如何从startup.cs文件本身写入日志。

我应该如何在MVC Core中管理DbContext Lifetime?

来自文档 应使用Scoped生存期将entity framework上下文添加到服务容器中。 如果您使用如上所示的辅助方法,则会自动完成此操作。 将使用entity framework的存储库应使用相同的生命周期。 我一直认为,我应该为我必须处理的每一个工作单元创建一个新的Context 。 这让我想一想,如果我有一个ServiceA和ServiceB ,它们在DbContext上应用不同的操作,他们应该得到一个不同的DbContext实例。 文档内容如下: Transient物体总是不同的; 为每个控制器和每个服务提供一个新实例。 Scoped对象在请求中是相同的,但在不同的请求中是不同的 回到ServiceA和ServiceB ,对我来说, Transient更适合。 我研究过,每个HttpRequest只能保存一次Context,但我真的不明白这是如何工作的。 特别是如果我们看一个服务: using (var transaction = dbContext.Database.BeginTransaction()) { //Create some entity var someEntity = new SomeEntity(); dbContext.SomeEntity.Add(someEntity); //Save in order to get the the id of the entity dbContext.SaveChanges(); //Create related entity var relatedEntity = new RelatedEntity { […]

如何在asp.net中的动作filter中添加参数?

我有以下filter属性,我可以将字符串数组传递给属性,如[MyAttribute(“string1”, “string2”)] 。 public class MyAttribute : TypeFilterAttribute { private readonly string[] _ids; public MyAttribute(params string[] ids) : base(typeof(MyAttributeImpl)) { _ids = ids; } private class MyAttributeImpl : IActionFilter { private readonly ILogger _logger; public MyAttributeImpl(ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger(); } public void OnActionExecuting(ActionExecutingContext context) { // HOW DO I ACCESS THE IDs VARIABLE […]

如何将虚拟路径映射到物理路径?

我知道我可以通过HostingEnvironment(Microsoft.AspNet.Hosting命名空间)获取WebRoot。 我需要根据在我的Web应用程序中的IIS中创建的虚拟路径获取物理路径。 在IIS中,网站根目录指向我发布的网站的wwwroot,并且在IIS中添加了一个虚拟目录 ,指向我的wwwroot之外的文件夹。 我希望我能够获得该虚拟目录的物理路径。 在MVC 5或更早版本中,我可以使用HostingEnvironment.MapPath(System.Web命名空间)或Server.MapPath,我应该在MVC 6中做什么? 编辑: 它不是虚拟路径,而是IIS中添加的虚拟目录。 我希望我能够获得该虚拟目录的物理路径。 我认为虚拟目录是IIS的一个特殊function,它看起来像一个完整虚拟路径的子路径,但可以是物理Web根文件夹之外的文件夹。 2015年10月4日 请参阅ASP.NET 5 Hosting repo中的这个问题 ,到目前为止,我们似乎无法获得IIS中虚拟目录的物理路径。

ASP.NET MVC Core / 6:多个提交按钮

我需要多个提交按钮来在控制器中执行不同的操作。 我在这里看到了一个优雅的解决方案: 如何在ASP.NET MVC框架中处理多个提交按钮? 使用此解决方案,可以使用自定义属性修饰操作方法。 处理路径时,此自定义属性的方法检查属性的属性是否与单击的提交按钮的名称匹配。 但是在MVC Core(RC2每晚构建)中我还没有找到ActionNameSelectorAttribute (我还搜索了Github存储库)。 我找到了一个类似的解决方案,它使用ActionMethodSelectorAttribute ( http://www.dotnetcurry.com/aspnet-mvc/724/handle-multiple-submit-buttons-aspnet-mvc-action-methods )。 ActionMethodSelectorAttribute可用,但方法IsValidForRequest具有不同的签名。 有一个类型为RouteContext的参数。 但我找不到那里的post数据。 所以我没有什么可以与我的自定义属性属性进行比较。 MVC Core中是否有与之前的MVC版本类似的优雅解决方案?