Tag: asp.net core mvc

身份validation限制扩展标头大小

我有一个连接到身份服务器4身份服务器的Asp .net mvc应用程序。 当我发布应用程序时,我对此错误感到不满。 上游从上游读取响应头时发送了太大的头 在上游读取响应头时,我跟踪到这个上游发送了太大的头 我无法改变配置,系统管理员已声明我们需要缩小标头。 看了之后我就不得不同意这些标题有点广泛。 应用程序中的Startup.cs services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; }) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme) .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options => { options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.Authority = Configuration[“ServiceSettings:IdentityServerEndpoint”]; options.RequireHttpsMetadata = true; options.ClientId = Configuration[“ServiceSettings:ClientId”]; options.ClientSecret = Configuration[“ServiceSettings:secret”]; options.Scope.Add(“testapi”); options.ResponseType = “code id_token”; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; options.Events = new OpenIdConnectEvents() { […]

在另一个程序集中找到Razor Pages

我想在另一个程序集中找到My Project Razor Pages。 为此,我写下面的代码: public void ConfigureServices(IServiceCollection services) { var adminAssembly = Assembly.Load(new AssemblyName(“App”)); services.AddMvc().AddApplicationPart(adminAssembly).AddRazorOptions(options => { var previous = options.CompilationCallback; options.CompilationCallback = context => { previous?.Invoke(context); context.Compilation = context.Compilation.AddReferences( MetadataReference.CreateFromFile(typeof(dodo).Assembly.Location)); }; }); services.Configure(options => { options.FileProviders.Add(new EmbeddedFileProvider(Assembly.Load(“App”))); options.FileProviders.Add(new PhysicalFileProvider(@”C:\Users\soheil\Documents\Visual Studio 2017\Projects\WebApplication5\App”)); }); } 我的解决方案 运行localhost:5000/SameTodo获取以下错误: 缺少一个或多个编译引用。 确保您的项目引用了“Microsoft.NET.Sdk.Web”,并且“PreserveCompilationContext”属性未设置为false。 堆: 找不到类型或命名空间名称’SameTodoModel’(您是否缺少using指令或程序集引用?)+ public global :: Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper […]

从类库项目中访问appsettings.json文件设置

我知道如何在web项目上设置appsettings.json文件。但是你能告诉我如何从类库项目中访问它吗? 我可以在web项目中按如下所示对其进行配置。那么如何从类库项目中访问这些值? 那可能吗 ? public class MyConfig { public string ApplicationName { get; set; } public int Version { get; set; } } public class Startup { public IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile(“appsettings.json”, optional: true, reloadOnChange: true) Configuration = builder.Build(); } } public […]

asp.net mvc核心如何返回Json查询

首先,我知道如何通过执行此操作返回Json查询 public JsonResult streams() { using (var conn = new NpgsqlConnection(Connectionstring)) { conn.Open(); var credentials = conn.Query(“select id,name from streams”).ToList(); ViewData[“Message”] = “Your application description page.”; conn.Close(); return Json(credentials); } } 上面的代码从数据库中为我返回Json,但是现在我实际上是通过将查询更改为此来从SQL代码返回Json var credentials = conn.Query(“select SELECT array_to_json(array_agg(t)) from (select id,name from streams) t”).ToList(); 新的查询正常工作,但它在Controller中返回null,因为我现在这样 public JsonResult streams() { using (var conn = new NpgsqlConnection(Connectionstring)) […]

在添加Entity Framework Core(1.1.0)迁移时,dotnet exec需要托管的.dll或.exe扩展

错误信息: PM> Add-Migration InitialDatabase dotnet exec needs a managed .dll or .exe extension. The application specified was ‘C:\Users\xxxxxx\documents\visual studio 2017\Projects\TheWorld\src\TheWorld\bin\Debug\netcoreapp1.0\TheWorld.runtimeconfig.json’ Process finished with non-zero exit code PM> Visual Studio版本:2017 RC 项目依赖性: 错误截图:

在ASP.NET Core中启用来自同一会话的并发请求

编辑:这显然是在浏览器中测试的问题,而不是代码。 默认情况下,Core中的会话将被禁用。 原始问题: 我正在开发一个Web API,它需要同时处理多个请求,即使是来自同一个客户端。 它是一个ASP.NET核心MVC(1.1.2)应用程序,目前针对完整框架(4.5.2),主要是为了与其他库兼容。 当我第一次测试我的并发性时,我很惊讶这些请求根本不是并发的。 我用Google搜索并发现ASP.NET不会同时处理会话中的请求,而是将它们排队。 快速测试表明会话可能是罪魁祸首: [HttpGet(“sleep”)] public string Sleep() { Thread.Sleep(5000); return $”Done at {DateTime.Now:u}”; } 当我从同一浏览器中的多个选项卡快速请求时,每个选项卡之间需要5秒钟。 当我使用多个浏览器时,情况并非如此,它会在5秒钟内响应多次。 在搜索解决方案时,我一直在寻找在ASP.NET中禁用会话状态的方法,但对Core来说却没有。 就会话而言,我使用的是默认的API项目模板,而我没有采取任何措施来专门启用/设置会话状态。 有没有办法摆脱ASP.NET Core中的会话状态? 或者是否有更好的解决方案来启用并发请求?

在MVC6中如何阻止直接访问wwwroot中的文件夹?

我们正在开发一个最新的MVC框架中的应用程序,到目前为止一切都很棒。 在我们的应用程序中,我们决定在wwwroot / app下的项目中嵌入一个角度应用程序。 我创建了一个app控制器并查看和禁止访问该应用程序,除非用户获得授权。 当未经授权的用户尝试访问localhost / app时,这非常有效 – 它将它们踢回C#应用程序登录页面。 我想更进一步,并禁止访问该文件夹中的直接文件,例如localhost / app / scripts / controllers / name.js或部分html文件/app/partials/name-partial.html。 在过去,我将进入web.config并添加以下代码,但我没有找到最新框架的等效项。 理想情况下,如果可能的话,我希望这是startup.cs或appsettings.json中的条目

在MVC中路由6

我有一个超级简单的控制器,有两种方法: public IActionResult Users(long id) { return Json(new { name = “Example User” }); } public IActionResult Users() { return Json(new { list = new List() }); } 一个用于选择所有用户,另一个用于返回所有用户。 在web api 2中,我可以使用以下路由,一切正常: config.Routes.MapHttpRoute( name: “Users”, routeTemplate: “v1/Users”, defaults: new { action = “Users”, controller = “Users” }, constraints: null, handler: new TokenValidationHandler() { InnerHandler = […]

ASP .NET Core:仅适用于某些静态文件类型的CORS标头

我有一个ASP .NET Core自托管项目。 我正在从静态文件夹中提供内容(没问题)。 它可以跨站点提供图像而不会出现问题(CORS标题显示)。 但是,对于某些文件类型(如JSON),它们的CORS标头不会显示,并且客户端站点无法查看内容。 如果我将文件重命名为未知类型(例如JSONX),它将使用CORS标头提供服务,没问题。 如何使用CORS标头来提供服务呢? 我在Startup.cs中设置了以下CORS策略: public void ConfigureServices(IServiceCollection services) { services.AddCors(options => { options.AddPolicy(“CorsPolicy”, builder => builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials() ); }); // Add framework services. services.AddMvc(); } 以下是我的配置 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.UseCors(“CorsPolicy”); loggerFactory.AddConsole(Configuration.GetSection(“Logging”)); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler(“/Home/Error”); } […]

ASPNET 5 MVC 6中的远程validation

在aspnet 5中找不到JsonRequestBehavior 我正在尝试实现远程validation演示,似乎Microsoft.AspNet.Mvc不包含JsonRequestBehavior枚举。 但它确实存在于以前版本的MVC中的System.Web.Mvc命名空间中 模型: public class Person : Entity { [Required] [StringLength(512)] [Remote(“IsAllowedName”, “Validation”, ErrorMessage=”This name is not allowed!” )] [Display(Name = “First (and middle) name”)] public String FirstMidName { get; set; } 视图: … … 控制器: [HttpGet] public JsonResult IsAllowedName(string FirstMidName) { if (FirstMidName.ToLower() == “oleg”) { return Json(false, JsonRequestBehavior.AllowGet); } return Json(true); […]