Tag: asp.net core 2.0

查询ASP.NET Core 2和Entity Framework Core 2中表中的附近位置

我正在尝试查询我可以在我的SQL数据库中查找给定经度和纬度点内的所有位置(比如50英里)。 我填充了一些post,在Post表中我有两列,我在创建post时存储经度和纬度。 以下是该表的外观: 我已经浏览了许多如何尝试实现这一点的例子,但似乎它们只是不起作用。 我知道从研究ASP.NET Core不支持DbGeography ,其他文章刚刚过时。 发现这篇文章 ,但它使用DbGeography ,因此不起作用。 在GitHub上找到了这个: 在这里我只是不知道这是否会起作用。 仅供参考,这是我的Post模型的外观: public class Post { public int Id { get; set; } public string Title { get; set; } public double Lat { get; set; } public double Lng { get; set; } public DateTime Created { get; set; } public Category Category […]

HttpClient和ASP.NET Core 2.0 Web服务之间的连接已关闭错误

我有一个在IIS上运行的ASP.NET Core 2.0 Web服务。 控制器的一种方法或多或少看起来像这样: [HttpGet()] public IActionResult Test() { // do some db updates and get data var result = DoSomeStuff(); // serialize data to byte array var output = Serialize(result); return File(output, “application/octet-stream”); } 它执行一些数据库更新,从表中查询记录,序列化数据并将其作为响应发送。 数据以二进制格式发送。 我正在使用MessagePack-CSharp作为序列化程序。 然后我有客户端应用程序与此Web服务进行通信。 它是.NET Standard 2.0库,从.NET 4.6.1控制台应用程序引用。 我使用HttpClient进行请求,并使用HttpResponseMessage.Content.ReadAsByteArrayAsync()来读取响应(具体代码见下文)。 我想做一些测试。 我的桌子有cca。 80列,包含cca。 140000条记录。 所有这些都应该发送给客户。 从db获取数据需要几秒钟,然后它是序列化的所有内容和cca的结果。 34MB被发送给客户。 我有10个客户。 当他们连续调用webservice时,一切正常。 当我强调web服务和并行启动客户端时,我几乎总是会遇到一些错误(通常有一两个失败,有时甚至是4-5)。 […]

如何在Asp.net core 2.0中使用log4net

我在我的asp.net core 2.0应用程序中配置log4net ,如本文LINK中所述 Program.cs中 public static void Main(string[] args) { var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); XmlConfigurator.Configure(logRepository, new FileInfo(“log4net.config”)); BuildWebHost(args).Run(); } HomeController的 public class HomeController : Controller { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(HomeController)); public IActionResult Error() { log.Info(“Hello logging world!”); return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } log4net.config 不走运!,我没有看到在C […]

ASP.NET Core 2.0将Cookie和承载授权结合在一起,用于同一端点

我在VS17中使用“Web应用程序(模型 – 视图 – 控制器)”模板和“.Net Framework”+“ASP.NET Core 2”作为配置创建了一个新的ASP.NET核心Web应用程序项目。 身份validation配置设置为“个人用户帐户”。 我有以下示例端点: [Produces(“application/json”)] [Route(“api/price”)] [Authorize(Roles = “PriceViwer”, AuthenticationSchemes = “Cookies,Bearer”)] public class PriceController : Controller { public IActionResult Get() { return Ok(new Dictionary { {“Galleon/Pound”, “999.999” } ); } } “Cookies,Bearer”是通过连接CookieAuthenticationDefaults.AuthenticationScheme和JwtBearerDefaults.AuthenticationScheme 。 目标是能够为端点配置授权,以便可以使用令牌和cookie身份validation方法访问它。 以下是我在Startup.cs中进行身份validation的设置: services.AddAuthentication() .AddCookie(cfg => { cfg.SlidingExpiration = true;}) .AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; […]

ASP.NET Core通过web.config授权AD组

在我的旧.NET MVC应用程序中,我可以在IIS中启用Windows身份validation并禁用匿名。 然后在我的web.config文件中,我只需要输入: 在.NET Core 2.0中,这将无法正常工作 – 它会正确拒绝匿名,但无论如何都会授权所有用户。 如果我这样做: [Authorize(Roles = “Domain\\MyADGroupToHaveAccess”)] 在我的HomeController ,它可以工作,但我不想在我的项目中对此设置进行硬编码,因为它需要针对其他环境进行更改。 如何使web.config与AD授权一起使用? 或者是否有另一种方法可以在ASP.NET Core中不对此设置进行硬编码?

ASP.Net MVC核心2 – 区域路由

我正在尝试在我的ASP.Net MVC Core 2应用程序中实现一个Area管理员。 我已按如下方式为该区域配置了路线: // Default route app.UseMvc(routes => { routes.MapRoute( name: “default”, template: “{controller=Home}/{action=Index}/{id?}”); }); // Admin area route app.UseMvc(routes => { routes.MapRoute( name: “admin”, template: “{area=Admin}/{controller=Home}/{action=Index}/{id?}”); }); 一切都很好。 此管理area使用与主网站相同的Layout ,尽管_ViewStart.cshtml位于Areas/Admin/Views目录中,但这仍然可以正常工作。 我遇到的问题是导航菜单组件存在于主站点布局文件中,并且当在Admin区域内时,所有锚点中的href链接指向错误的URL。 说我有以下链接: My Account Shopping Basket Manage Users 在管理区域内,链接现在相对于该区域,因此看起来如下所示: http://localhost/Admin/Account/Index http://localhost/Admin/Shopping/Basket http://localhost/Admin/Admin/Users 有没有什么好方法可以使所有这些链接相对于站点根目录?

使用多个提交建模和validation表单

我试图找出使用ASP.Net Core 2建模和validation具有多个表单标签和多个提交按钮的表单的正确方法。我所拥有的是一个表单,用户可以输入用户名和密码并登录OR输入他们的名字,姓氏和手机号码并注册。 这是我的模型: public class Landing { [Required] public string Username { get; set; } [Required] public string Password { get; set; } [Required] public string FirstName { get; set; } [Required] public string LastName { get; set; } [Required] public string CellNumber { get; set; } } 这是我的相关剃刀视图代码: @model MyApp.ViewModels.Landing 现在遇到的问题是我的validation。 因为我的所有字段都标有[Required]属性,所以当我使用提交按钮提交表单时,它会validation所有5个字段。 我想要做的是仅validationUserName和Password […]

从.net标准库中读取appsettings.json

我已经使用.NET Core Framework启动了一个新的RESTful项目。 我将我的解决方案分为两部分:Framework(一组.NET标准库)和Web(RESTful项目)。 使用Framework文件夹,我提供了一些用于进一步增强web项目的库,并且我想提供一个带有通用方法T GetAppSetting(string Key)的Configuration类。 我的问题是:如何在.NET Standard中访问AppSettings.json文件? 我已经找到了很多关于阅读这个文件的例子,但所有这些例子都将文件读入了web项目,没有人将这个文件读入一个extarnal库。 我需要它为Others项目提供可重用的代码。

无法获取DbContext的reflection类型

在ASP Core 2.0 VS 2017中搭建控制器时,我得到以下内容: 无法获取DbContext的reflection类型: 微软.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(String [ ] args)at Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String [] args) 这突然发生了,一个运行相同代码的同事没有遇到这个问题,我尝试了干净的构建,删除了每个项目中的bin和obj文件夹,删除了数据库,但我似乎无法解决这个问题,非常感谢任何帮助。 模型: public class SettingType : BaseModel { public int SettingTypeId { get; set; } public string SettingTypeDescription { get; set; } public string SystemCode { get; set; } }

为什么ASP.NET Core Identity 2.0授权filter导致我获得404?

我有一个控制器,我想只限制一个特定的角色,让我们说admin 。 在使用admin角色设置用户之后,我可以使用IsInRoleAsync方法(返回true)validation他是否在该角色上。 当使用[Authorize(Roles = “admin”)]设置属性时,我得到的是同一个用户的404。 我正在使用持有者令牌(我不认为这是相关的,但无论如何),这就是我尝试调试的方法: 控制器没有[Authorize] :返回资源。 [好] 带[Authorize]控制器: 仅当我使用Authentication: Bearer [access token] 时才返回资源Authentication: Bearer [access token] [确定] 带[Authorize(Roles = “admin”)]控制器:即使在拥有角色集的用户登录后,我也得到404 [NOK] 我不知道我是否缺少一些配置,但这是我的ConfigureServices: public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // Add framework services. services.AddDbContext(options => { options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”)); options.UseOpenIddict(); }); services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); services.AddOpenIddict(opt => { opt.AddEntityFrameworkCoreStores(); opt.AddMvcBinders(); opt.EnableTokenEndpoint(“/api/token”); opt.AllowPasswordFlow(); opt.DisableHttpsRequirement(); //for dev only! […]