Tag: asp.net core

在MVC 6中读取文件

我想在我的服务器的主文件夹中访问我的create.sql文件。 它包含用于设置数据库的查询。 我有一个问题,根本无法访问此文件。 1)我无法通过Configuration 。 我只能使用AddJsonFile , AddXmlFile和AddIniFile 。 而且我认为将一个大的sql文件放入其中的任何一个都不是最好的主意。 2) github上的Mvc源似乎缺少MapPath 。 因此不可能使用Server.MapPath(“~/create.sql”) 。 那么如何实现呢?

IOptions注入

在我看来,让域服务需要一个IOptions实例来传递它配置是一个坏主意。 现在我已经将额外的(不必要的?)依赖项拉入库中。 我已经看到很多在网络上注入IOptions的例子,但是我没有看到它带来的额外好处。 为什么不将实际的POCO注入服务? services.AddTransient(x => { var appSettings = x.GetService<IOptions>(); return new ConnectionResolver(appSettings.Value); }); 甚至使用这种机制: AppSettings appSettings = new AppSettings(); Configuration.GetSection(“AppSettings”).Bind(appSettings); services.AddTransient(x => { return new ConnectionResolver(appSettings.SomeValue); }); 使用设置: public class MyConnectionResolver { // Why this? public MyConnectionResolver(IOptions appSettings) { … } // Why not this? public MyConnectionResolver(AppSettings appSettings) { … } // Or […]

如何使用mvc 6,asp.net 5注册全局filter

我正在尝试在简单的mvc应用程序中注册filter。 我甚至没有在基本filter之外编写任何东西来测试。 我正在使用VS 2015 RC,我通过转到新项目 – > Asp.net Web应用程序 – > Web API创建了初始应用程序。 我遇到的问题是我无法找到一种全局注册filter的方法。 从早期版本的MVC我看到GlobalFilters.Filters ,但是当我尝试在新框架中使用它时,它告诉我无法找到GlobalFilters。 在以前的版本中,它存在于System.Web.MVC中,但我不再在我的引用中看到它,我似乎无法在任何地方找到它。 这看起来应该很简单,但到目前为止我还没有找到办法。 这是我的project.json { “webroot”: “wwwroot”, “version”: “1.0.0-*”, “dependencies”: { “Microsoft.AspNet.Mvc”: “6.0.0-beta4”, “Microsoft.AspNet.Server.IIS”: “1.0.0-beta4”, “Microsoft.AspNet.Server.WebListener”: “1.0.0-beta4”, “Microsoft.AspNet.StaticFiles”: “1.0.0-beta4” }, “commands”: { “web”: “Microsoft.AspNet.Hosting –server Microsoft.AspNet.Server.WebListener –server.urls http://localhost:5000” }, “frameworks”: { “dnx451”: { “frameworkAssemblies”: { } }, “dnxcore50”: { } […]

HttpClient.GetAsync永远不会在Xamarin.Android上返回

我正在开发一个Android应用程序,由Azure上托管的ASP.NET Core应用程序提供支持。 在为Xamarin.Forms(仅限Android)项目制作function之前,我正在使用共享库项目来测试控制台应用程序项目的基本内容。 登录到Web服务后运行以下代码,其中Client是HttpClient : public static async Task GetInformationAsync(string accountId) { HttpResponseMessage response = await Client.GetAsync(UriData + “/” + accountId); response.EnsureSuccessStatusCode(); string responseContent = await response.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(responseContent); } 在同一台计算机/网络下,代码在Console应用程序上完成不到一秒钟,然而,它在Xamarin.Forms.Android项目中永远不会完成(甚至等待一分钟)。 我发现这很奇怪,因为Android客户端可以使用PostAsync成功登录到Web服务。 但是,Android客户端和控制台客户端如何调用GetInformationAsync 。 而Console客户端异步调用它: private static async void TestDataDownload() { … var data = await WebApiClient.GetInformationAsync(myId); } Android客户端同步调用它 public void MainPage() { … var […]

如何设置有效的内部部署ADFS URI?

我有一个.NET 4.6.2 Windows客户端应用程序,它需要从我们的内部部署ADFS服务器获取身份validation令牌,并使用它来调用ASP.NET核心REST API。 它的客户端名称,id(GUID)和重定向URI已在ADFS中注册。 我正在使用最新的ADAL(v3.13)库来促进身份validation。 我试图获得一个令牌,如ADAL示例代码所示,如​​下所示: AuthenticationContext authenticationContext = new AuthenticationContext(“https:///”, false); var result = authenticationContext.AcquireTokenAsync(, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto)); AcquireTokenAsync调用返回错误,说: 基于浏览器的身份validation对话框无法完成。 原因:服务器未找到与请求的URI(统一资源标识符)匹配的任何内容。 谁能告诉我: 在https:///或错误中是否引用了“请求的URI”? 我是否需要以某种方式向ADFS注册或 ,如果是,如何? 我需要的任何其他信息才能使其工作? 谢谢! 彼得

.net核心石英dependency injection

如何在.net内核中配置Quartz以使用dependency injection? 我使用标准的.net核心依赖机制。 在实现IJob的类的构造函数中,我需要注入一些依赖项。

实体类型’IdentityUserLogin ‘需要定义主键

我在linux上使用dotnet core 1.1,当我想从我的常规dbContext中分离identityContext时,我遇到问题,每当我在startup.cs中运行以下行时 – > configure: //… some other services using (var serviceScope = app.ApplicationServices.GetRequiredService().CreateScope()) { serviceScope.ServiceProvider.GetService().Database.Migrate(); //running other database.migrations here + seeding data. But it is the line above that causes problems 因此,该行抛出exception:实体类型’IdentityUserLogin’需要定义主键 我根本不明白这一点,为什么我的工作是给IdentityUserLogin一个主键?它是一个第三方类,我甚至没有触及它。 我有以下简单的设置: namespace EsportshubApi.Models { public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext(DbContextOptions options) : base(options) { } public ApplicationDbContext() { […]

.NET Core从appsettings.json获取连接字符串

我开发了一个简单的Web应用程序,并且在将来,我希望将其作为多租户来实现。 所以我想直接将连接字符串写入OnConfiguring方法: public class ApplicationContext : DbContext { public DbSet Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(“connection string from appsettings.json”); base.OnConfiguring(optionsBuilder); } } 启动课程: public void ConfigureServices(IServiceCollection services) { services.AddDbContext(); services.AddMvc(); } 如何从appsettings.json提取连接字符串到ApplicationContext类? 我不想为ApplicationContext类创建任何构造函数。

ASP.NET Core RC2种子数据库

我的问题是我试图用数据种子entity framework核心数据库,在我看来下面的代码显示工作。 我已经意识到这不应该在ApplicationDbContext构造函数中调用,应该从startup调用,但我不知道如何做到这一点。 编辑:根据Ketrex提供的解决方案,我的解决方案如下: Startup.cs: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { … app.ApplicationServices.GetRequiredService().Seed(); } 种子延伸: public static class DbContextExtensions { public static void Seed(this ApplicationDbContext context) { // Perform database delete and create context.Database.EnsureDeleted(); context.Database.EnsureCreated(); // Perform seed operations AddCountries(context); AddAreas(context); AddGrades(context); AddCrags(context); AddClimbs(context); // Save changes and release resources context.SaveChanges(); context.Dispose(); […]

中间件应该总是调用下一个?

我一直在努力了解ASP.NET 5管道中间件如何真正起作用。 正如我所知,中间件只是一个Func ,它是一个指向接收对下一个请求委托的引用的方法的指针,并返回一个包装下一个请求委托的新方法。 当然,我们可以使用类来表示中间件,例如: public class MyMiddleware { private readonly _next; public MyMiddleware(RequestDelegate next) { if (next == null) { throw new ArgumentNullException(“next”); } _next = next; } public Task Invoke(HttpContext context) { // New request delegate code here which can wrap the next one on the pipeline } } 由于RequestDelegate是一个委托,可以保存对接收一个HttpContext并返回Task的方法的Invoke因此Invoke方法是要返回的请求委托,并且可以访问管道上的下一个委托委托。 然后,在编写中间件时,我们可以访问管道的下一个组件,但我有一个疑问。 一开始我认为理想总是以下列方式工作: 检查中间件是否可以处理请求 […]