Tag: asp.net core

使用UseRequestLocalization强制所有请求使用单个区域性

如何在ASP.NET Core RC 2中设置固定文化? 我的Startup.cs : var options = new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture(“pt-BR”, “pt-BR”), SupportedCultures = new[] { new CultureInfo(“pt-BR”) }, SupportedUICultures = new[] { new CultureInfo(“pt-BR”) } }; options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context => await Task.FromResult(new ProviderCultureResult(“pt-BR”, “pt-BR”)))); app.UseRequestLocalization(options); 一些请求仍然是en-US

ASP.NET Boilerplate多个数据库和DbContexts

我想使用ASP.NET Boilerplate一次连接到两个数据库。 我按照这个例子: https : //github.com/aspnetboilerplate/aspnetboilerplate-samples/tree/master/MultipleDbContextEfCoreDemo 问题是只有第一个上下文会包含所有的Abp表。 第二个上下文是现有数据库,其上没有任何Abp表。 当我启动网络应用程序时,我得到了这个: System.Data.SqlClient.SqlException: ‘Invalid object name ‘AbpLanguages’.’ 显然它正在寻找第二个上下文中的Abp *表,但它们不存在(并且它们不应该存在)。 那么,拥有多个上下文的正确方法是什么,以便它不会在第二个上下文中查找Abp *表? 更新 我通过修改从模板生成的干净的ASP.NET Boilerplate项目创建了一个示例应用程序。 我已经使用从API模板生成的项目进行了测试,该项目仅使用API​​,并且在那里完美运行。 但是当在生成项目时组合API和前端时,我遇到了在其他上下文中查找Abp *表的问题。 Dropbox: https ://www.dropbox.com/s/19gj8ms0jwz500k/4.0.1.zip ? dl = 0 Github: https : //github.com/FrikkinLazer/MultipleContext.git

有些值是null AJAX调用控制器ASP.Net Core

我正在尝试通过AJAX调用将对象通过表单传递给我的控制器。 这是对象,除AuctionId外,一切都返回null / 0 : public class BidModel { [JsonProperty(“BudID”)] public string BidId { get; set; } [JsonProperty(“Summa”)] public int Amount { get; set; } [JsonProperty(“AuktionID”)] public string AuctionId { get; set; } [JsonProperty(“Budgivare”)] public string Bidder { get; set; } } 表格: Lägg 这是AJAX调用: $(‘#createBid’).on(‘submit’, function (e) { e.preventDefault(); var $form = $(this); $.ajax({ […]

ASP.NET Core是否支持RESTful Web API的JSON Web签名?

我已经阅读了一些关于使用带有ASP.NET Core的JSON Web令牌来validation对REST API的请求的优秀教程,但是我找不到关于是否支持更常用的JSON Web签名(rfc7515)与REST API定义一起使用的文档。篡改保护请求的内容。 例如,以下Controller允许一个简单的POST请求,从而将JSON序列化的“CreateRequest”对象提交给API并进行处理: [Produces(“application/json”)] [Route(“api/WebService”)] public class WebServiceController { [HttpPost(“CreateRequest”)] public override IActionResult Create([FromBody] CreateRequest request) { if (request == null) { return BadRequest(); } else { // Do stuff with CreateRequest object … return new OkResult(); } } } 如果我想保护CreateRequest对象不被篡改传输JSON Web Signature似乎是一种很好的方法,但是如何在编码为BASE64并签名时让请求处理程序接受该对象,并且最好仅在签名validation时? 我知道保护内容的完整性可以通过其他方式解决,例如通过TLS加密连接,但暂时假设请求必须通过纯HTTP进行,内容在完整视图中。 因此,类似的JSON Web加密标准也不适合我的用例。

ASP.Net Core应用程序在visual studio中运行,但不适用于dotnet运行

我有一个asp.net核心应用程序,我开始通过visual studio构建,通常它按下F5或在visual studio中按调试按钮时工作正常。 但是,如果我尝试从命令行使用dotnet run ,它仍然可以工作并开始监听默认端口5000(我假设这是红隼监听)。 但是,如果我尝试使用http:// localhost:5000通过任何浏览器访问该页面,我只是得到错误,说无法连接。 我明白,如果我从visual studio运行,它会自动将我的应用程序放在IIS后面,但我不明白为什么如果应用程序只是自托管它不起作用。 我想把我的项目转移到linux环境,这是现在唯一似乎阻止我的事情。 我已经测试过通过cli创建新的dotnet应用程序,如果我尝试通过浏览器访问这些工作正常,它似乎我在VS中创建的这个特定的应用程序不起作用。 我的dotnet –version返回1.0.4 编辑(详细答案) 因此,为了增加Sanket下面的答案,我还想出了为什么我的应用程序只有在我将ASPNETCORE_ENVIRONMENT设置为开发时才能正常工作的真正原因。 事实certificate,我已经设置了一个测试邮件服务,只有在我的环境是开发时才配置: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, WorldContextSeedData seeder) { if (env.IsEnvironment(“Development”)) { app.UseDeveloperExceptionPage(); loggerFactory.AddDebug(LogLevel.Information); } } 但是在我的一个控制器中,我没有像这样检查环境,而是将电子邮件服务初始化: public AppController(IMailService mailService, IConfigurationRoot config, WorldRepository repository, ILogger logger, IHostingEnvironment env) { _env = env; _mailService = mailService; _config […]

在另一个程序集中找到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 […]

AspNetCore上的unit testing控制器模型validation

在ASPNET核心项目中,我正在尝试创建一些unit testing,以validation我的数据validation逻辑是否正常工作。 我的控制器非常简单: [HttpPost] [Route(“Track”)] public void Track([FromBody] DataItem item) { if (!ModelState.IsValid) throw new ArgumentException(“Bad request”); _dataItemSaver.SaveData(item); } 我正在使用一个测试基类,它将_myController对象设置为测试中的控制器。 public ControllerTestBase() { var builder = new ConfigurationBuilder() .AddJsonFile(“appsettings.json”, optional: false, reloadOnChange: true) .AddJsonFile($”buildversion.json”, optional: true) .AddEnvironmentVariables(); _config = builder.Build(); var services = new ServiceCollection() .AddEntityFrameworkInMemoryDatabase() .AddDbContext(options => { options.UseInMemoryDatabase(); }) .AddScoped() .AddScoped() .Configure(_config.GetSection(nameof(MyConfig))); services […]

无法读取dotnet核心中链接的appsettings.json文件的值

在aspnetcore 2.0项目中,我试图在我的Web应用程序和我的几个xunit测试项目中设置一个共享的appsettings.json文件。 首先,当我将appsettings.json“定期”添加到我的项目中时,一切正常。 但是,当我尝试从其他路径添加单个引用/链接文件时,在运行时期间不会读取这些值。 要设置它,为每个项目我将链接文件添加到.csproj: appsettings.json Always 在每个构建中,我可以validation它是否输出到/bin/Debug/netcoreapp2.0目录: 问题是,当通过我的webapi的默认启动或在测试中读取它时,设置值始终为null。 我正在使用强类型配置。 在webapi项目中,我正在使用带有aspnetcore 2.0约定的WebHost.CreateDefaultBuilder() (在引擎盖上查看hostingEnvironment.EnvironmentName ,dotPeek告诉我)。 但是在测试项目的情况下,也会发生同样的情况。 在我的全局测试夹具中,以下示例可以解释所有这些: var builder = new ConfigurationBuilder() // .SetBasePath(???) .AddJsonFile(“appsettings.json”); var configuration = builder.Build(); var settings = new FooSettings(); configuration.GetSection(“FooSettings”).Bind(settings); if (settings == null) throw new Exception(“Could not find or parse ‘appsettings.json'”); // The problem: always fails on this check if […]

NLog没有写入事件日志.NET Core 2.1

我已经将NLog添加到我的.NET核心控制台应用程序中,它可以处理文件和数据库目标。 但是,当我尝试使用eventviewer时,它不会记录任何内容。 当我为eventviewer目标添加代码时,文件和数据库部分不记录任何内容。 当我删除它时,日志记录再次开始工作。 我使用Powershell为应用程序添加了一个新的事件查看器源,因此这不是问题。 应用程序不会崩溃或报告错误,它运行正常,但在包含事件查看器时不记录任何内容。 Server=test; Database=test; User Id=sa; Password=password; INSERT INTO dbo.Log (Application, Logged, Level, Message, Logger, CallSite, Exception ) VALUES (@Application, @Logged, @Level, @Message, @Logger, @Callsite, @Exception); 关于如何实现这个或者我错过了什么的任何想法?

剃刀页面上的Dropzone返回400状态代码

我在ASP.NET核心2.0的RAZOR页面上使用DropZone,其他表单输入如下 – DzDemo.cshtml页面 – upload JS: – Dropzone.options.myDropzone = { url: “/DzDemo?handler=Upload”, autoProcessQueue: false, uploadMultiple: true, parallelUploads: 100, maxFiles: 100, acceptedFiles: “image/*”, // paramName: myParamName, init: function () { var submitButton = document.querySelector(“#submit-all”); var wrapperThis = this; submitButton.addEventListener(“click”, function () { wrapperThis.processQueue(); }); this.on(‘sendingmultiple’, function (data, xhr, formData) { formData.append(“UserName”, $(“#Username”).val()); }); this.on(‘error’, function (file, […]