Tag: asp.net core

从.NET Core / ASP.NET Core中的类库访问App密钥数据

要访问类库中的App Keys,我们是否需要在每个需要访问AppKey的类库和类中执行以下代码? public static IConfigurationRoot Configuration = new ConfigurationBuilder().AddJsonFile(“appsettings.json”).Build(); 这是我在Microsoft文档中发现的,但这看起来非常多余。 项目中的启动类如下所示 public class Startup { public IConfigurationRoot Configuration { get; set; } public Startup() { var builder = new ConfigurationBuilder() .AddJsonFile(“appsettings.json”); Configuration = builder.Build(); } public void ConfigureServices(IServiceCollection services) { services.AddEntityFramework().AddEntityFrameworkSqlServer() .AddDbContext(options => options.UseSqlServer(Configuration[“Data:MyDb:ConnectionString”])); } } 那么我应该如何在项目的每个类中注入这个“ IConfigurationRoot ”。 我是否必须在每个类库中重复此Startup类? 为什么这不是.NET Core Framework的一部分?

Aspnet核心十进制绑定不适用于非英语文化

我有一个运行非英语配置(西class牙语)的aspnet核心应用程序: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { …… app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture(new CultureInfo(“es-AR”)) ,SupportedCultures = new List { new CultureInfo(“es-AR”) } ,SupportedUICultures = new List { new CultureInfo(“es”) } }); ……… } 在英语中,十进制数的小数部分用点分隔,但在西class牙语中使用逗号: 10256.35英语 10256,35西class牙语 我在控制器中有这个动作: [HttpPost] public decimal Test(decimal val) { return val; } 如果我使用邮递员并向该行动发送一个类似于{val:15.30}的json,则该动作中的val将返回0(由于文化而绑定不起作用)。 如果我发送这样的json {val:15,30}然后在我回忆的动作中15.30我遇到的问题是,我需要动作接受带逗号的小数,因为这是来自输入类型文本的格式应用程序的表单。 但我还需要接受带有来自json格式请求的点的十进制。 […]

在ASP.NET MVC核心应用程序(RC2)中显示项目版本

如何从project.json显示应用程序版本? 我正在使用gulp-bump来自动增量版本,但我无法显示最新版本。 这是我正在尝试的: @(Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion) 这不起作用,它显示“ 1.0.0 ”而不是来自project.json的实际值 我也试过这个,但看起来它不再适用于RC2: @inject Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment appEnv My version number is @(appEnv.ApplicationVersion)

将IHtmlContent / TagBuilder转换为C#中的字符串

我正在使用ASP.NET 5.我需要将IHtmlContent转换为String IIHtmlContent是ASP.NET 5 Microsoft.AspNet.Html.Abstractions命名空间的一部分,是TagBuilder实现的接口 简化我有以下方法 public static IHtmlContent GetContent() { return new HtmlString(“blah”); } 当我参考它 string output = GetContent().ToString(); 我得到GetContent()的以下输出 “Microsoft.AspNet.Mvc.Rendering.TagBuilder” 并不是 blah 我想要的 我也尝试过使用StringBuilder StringBuilder html = new StringBuilder(); html.Append(GetContent()); 但它也会附加相同的命名空间而不是字符串值 我试着把它投射到TagBuilder TagBuilder content = (TagBuilder)GetContent(); 但TagBuilder没有转换为字符串的方法 如何将IHtmlContent或TagBuilder转换为字符串?

ASP.Net核心内容 – 处置附件/内联

我从WebAPI控制器返回一个文件。 Content-Disposition标头值自动设置为“attachment”。 例如: 性格:依恋; 文件名= “30956.pdf”; 文件名* = UTF-8”30956.pdf 当它设置为附件时,浏览器将要求保存文件而不是打开它。 我想打开它。 如何将其设置为“内联”而不是“附件”? 我使用这种方法发送文件: public IActionResult GetDocument(int id) { var filename = $”folder/{id}.pdf”; var fileContentResult = new FileContentResult(File.ReadAllBytes(filename), “application/pdf”) { FileDownloadName = $”{id}.pdf” }; // I need to delete file after me System.IO.File.Delete(filename); return fileContentResult; }

在ASP.NET核心中注入IUrlHelper

在RC1中 , IUrlHelper可以在服务中注入services.AddMvc()在启动类中使用services.AddMvc() ) 这在RC2中不再起作用。 有没有人知道如何在RC2中做到这一点,因为刚刚新建一个UrlHelper需要一个ActionContext对象。 不知道如何在控制器之外得到它。

vNextdependency injection通用接口

我创建了一个ASP.Net vNext Web API。 我已经成功地使用了一个简单的接口,例如: services.AddScoped(); 但是,我无法弄清楚如何使用通用接口进行依赖性约定。 如何为此接口设置dependency injection: public interface IMongoConnectionHandler where T : IMongoEntity

.NET Core 2.0日志记录是否已损坏?

升级到.NET Core 2.0(+ ASP.NET Core 2.0)后,我似乎无法获得输出的Trace级别日志信息。 事实上,如果我做一个dotnet new web项目并在Startup for Configure中添加下面的代码,我没有得到任何跟踪或调试日志消息,但我得到两次信息和错误消息。 注释掉.AddConsole()调用将仅输出这些(信息和错误)一次 – 建议默认情况下使用控制台提供程序自动配置它。 请记住,这是一个“文件 – >新”项目经验, Program.cs没有任何设置用于记录或配置 – 除了我添加的内容。 有谁见过的东西? 或者我应该为它注册一个GitHub问题。 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Microsoft.Extensions.Logging.LogLevel.Trace); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { var logger = loggerFactory.CreateLogger(“Blah”); logger.LogTrace(“Hello world : Trace”); logger.LogDebug(“Hello world : Debug”); logger.LogInformation(“Hello world […]

从ASP.NET 5控制器VS 2015获取wwwroot文件夹路径

很抱歉有一个noob问题,但似乎我无法从Controller获取Server.MapPath。 我需要从wwwroot的images文件夹输出json文件列表。 他们是在wwwroot / images。 我怎样才能获得可靠的wwwroot路径? using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Mvc; using www.Classes; using System.Web; namespace www.Controllers { [Route(“api/[controller]”)] public class ProductsController : Controller { [HttpGet] public IEnumerable Get() { FolderScanner scanner = new FolderScanner(Server.MapPath(“/”)); return scanner.scan(); } } } System.MapPath似乎在System.Web命名空间中不可用。 Project正在使用ASP.NET 5和dotNET 4.6 Framework

ASP.Net Core 2.0:无需请求即可创建UrlHelper

我正在为后台工作者创建一个UrlHelper来创建回调url,这意味着它不是正常请求的一部分,我可以通过DI请求它。 在ASP.Net 5中,我可以创建一个HttpRequest,并为它提供与构建我的应用程序相同的HttpConfiguration,但在ASP.Net Core 2.0中,UrlHelper依赖于完整的ActionContext,这有点难以制作。 我有一个工作原型,但它正在使用一个讨厌的黑客来从应用程序启动过程中走私路由数据。 有一个更好的方法吗? public class Capture { public IRouter Router { get; set; } } public static class Ext { // Step 1: Inject smuggler when building web host public static IWebHostBuilder SniffRouteData(this IWebHostBuilder builder) { return builder.ConfigureServices(svc => svc.AddSingleton()); } // Step 2: Swipe the route data in application startup […]