Tag: asp.net core mvc

从类库访问Asp.net-core中的appsetting.json

我试图从类库中访问appsetting.json文件。 到目前为止,我找到的解决方案是创建一个从Microsoft.Extensions.Configuration实现接口IConfiguration的配置类,并将json文件添加到类中并从中读取。 var configuration = new Configuration(); configuration.AddJsonFile(“appsetting.json”); var connectionString= configuration.Get(“connectionString”); 这似乎是不好的选择,因为每次我们必须访问appsetting配置时我们必须添加json文件。 我们没有像ASP.NET中的 ConfigurationManager那样的替代方案。

在ASP.NET5控制台应用程序中使用Startup类

ASP.NET 5-beta4控制台应用程序(从VS2015中的ASP.NET控制台项目模板构建)是否可以使用Startup类来处理注册服务和设置配置详细信息? 我试图创建一个典型的Startup类,但是在通过dnx . run运行控制台应用程序时似乎永远不会调用它dnx . run dnx . run或在Visual Studio 2015中。 Startup.cs几乎是: public class Startup { public Startup(IHostingEnvironment env) { Configuration configuration = new Configuration(); configuration.AddJsonFile(“config.json”); configuration.AddJsonFile(“config.{env.EnvironmentName.ToLower()}.json”, optional: true); configuration.AddEnvironmentVariables(); this.Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.Configure(Configuration.GetSubKey(“Settings”)); services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => options.UseSqlServer(this.Configuration[“Data:DefaultConnection:ConnectionString”])); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) […]

在MVC控制器内打开websocket通道

有没有人在MVC控制器内打开websocket连接有任何经验? 技术堆栈: ASPNET Core 1.0(RC1)MVC,dnx46,System.Net.WebSockets 为什么MVC而不是中间件:为了整体一致性,路由,已经注入的存储库,在同一个控制器中调用私有方法的选项。 [HttpGet(“v1/resources/{id}”)] public async Task GetAsync(string id) { var resource = await this.repository.GetAsync(id); if (resource == null) { return new HttpStatusCodeResult(404); } if (this.HttpContext.WebSockets.IsWebSocketRequest) { var webSocket = await this.HttpContext.WebSockets.AcceptWebSocketAsync(); if (webSocket != null && webSocket.State == WebSocketState.Open) { while (true) { var response = string.Format(“Hello! Time {0}”, System.DateTime.Now.ToString()); var […]

如何在DNX Core 5.0(ASP.NET 5)中引用执行程序集?

我正在移植.NET 3.5 – 4.5中的一些代码。 在我的程序集内部,我有一些代码从当前正在执行的程序集中读取资源。 但是, GetExecutingAssembly()不是DNX核心5.0中的Assembly类型的方法。 var xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(xsdPath); DNX核心5.0中的Assembly.GetExecutingAssembly()相当于什么? 或者,如果我需要一个命名空间来获取该方法(也许是一个扩展方法?),那么命名空间是什么?

如何在MVC Core中动态选择控制器

我有一种情况,网站可能需要一个链接,根据数据库结果重定向到某些控制器。 例如: site.com/abcd 需要从Item Controller返回结果,通常称为/ item / view / 123 这里的关键是我不能将abcd硬编码到路由中。 一些链接可能会转到项目控制器,其他链接可能会转到订单控制器。 我已经尝试了一个到控制器的catchall路由,然后加载所需的控制器,但环境没有设置,所以它不能正常工作(它找不到视图)。

从ASP.NET核心中的类库加载和注册API控制器

我正在使用ASP.NET Core 1.0.1。 我有以下内容 使用”Microsoft.AspNetCore.Mvc”: “1.0.1”类库,以便开发我的控制器: using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace CoreAPIsLibrary.Controllers { [Route(“api/[controller]”)] public class ValuesContoller : Controller { public string Get() { return “value”; } // GET api/values/5 [HttpGet(“{id}”)] public string Get(int id) { return “value”; } // POST api/values [HttpPost] public void Post([FromBody]string value) { } […]

获取Startup.cs对象的参考

寻找知道ASP.NET MVC内部细节的高级ASP.NET架构师的答案。 这是标准ASP.NET核心应用程序的框架。 var config = new ConfigurationBuilder() .AddCommandLine(args) .AddEnvironmentVariables(prefix: “ASPNETCORE_”) .Build(); var host = new WebHostBuilder() .UseConfiguration(config) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .Build(); host.Run(); 在这篇文章中,ASP.NET设备实例化了一个Startup.cs类的实例 .UseStartup() 我的查询是如何获取(引用)这个已经实例化的Startup对象实例,我可以插入到我的Library / Framework中。 上下文是设置一些Uber级别框架并获得此联结(Startup.cs)的引用,其中所有请求都已启动。

视图组件中的Javascript

我有一个View组件,在Razor(.cshtml)文件中包含一些jQuery。 脚本本身非常特定于视图(处理一些第三方库的配置),因此我想将脚本和HTML保留在同一个文件中,以便组织起见。 问题是脚本没有在_Layout Scripts部分中呈现。 显然,这就是MVC处理与View组件有关的脚本的方式。 我可以通过在Razor文件中使用脚本来解决它, 但不能在Scripts部分内部 。 但后来我遇到依赖问题 – 因为在引用库之前使用了jQuery(对库的引用位于_Layout文件的底部附近)。 除了将jQuery的引用作为Razor代码的一部分包含在内之外,还有什么聪明的解决方案(这会阻碍HTML呈现放置组件的位置)吗? 我目前不在代码的前面,但是如果有机会,如果有人需要查看它以更好地理解它,我当然可以提供它。

MVC 6路由,SPA后备+ 404错误页面

使用ASP.NET Core 1.0的MVC 6的 RC1 ,您可以在调用app.UseMvc时从Startup.Configure函数中映射路由。 我已经映射了一个“spa-fallback”路由,它将确保HomeController和Index视图是默认值,如下所示: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { // … omitted for brevity app.UseExceptionHandler(“/Home/Error”); app.UseStatusCodePagesWithRedirects(“/Home/Error/{0}”); app.UseMvc(routes => { routes.MapRoute(“default”, “{controller=Home}/{action=Index}/{id?}”); routes.MapRoute(“spa-fallback”, “{*anything}”, new { controller = “Home”, action = “Index” }); routes.MapWebApiRoute(“defaultApi”, “api/{controller}/{id?}”); }); } 我希望回退,以便我的Angular2应用程序的路由不会导致HTTP状态代码为404,Not Found 。 但是,当用户无意中尝试导航到不存在的页面视图时,我还需要正确处理。 您可能会注意到我还调用了app.UseStatusCodePagesWithRedirects(“/Home/Error/{0}”); 。 使用状态代码和“spa-fallback”路由重定向到我的错误页面的调用似乎是互斥的 – 这意味着我似乎只能拥有一个或另一个(但遗憾的是不是两者) 。 有谁知道如何才能让两全其美?

ASP.NET 5 beta 8中的Windows身份validation支持

我有一个ASP.NET 5 MVC 6 Web API项目。 大多数API端点都具有[Authorize]属性,并且在IIS和Visual Studio中项目的属性上都启用了Windows身份validation。 这一切在beta 7中运行良好。 然而,在测试版8中,这不起作用。 通过一个完全干净的项目很容易重现这个: 使用ASP.NET 5 Web API模板创建新项目。 获取项目的属性(不是解决方案),转到“调试”选项卡,启用Windows身份validation并禁用“匿名”。 保存更改。 按F5并让它尝试运行该项目。 结果: 尝试确定托管应用程序的DNX进程的进程ID时发生错误。 现在返回项目属性并启用Anonymous。 也启用Windows。 保存更改。 转到您的控制器并添加[Authorize]属性。 再次F5。 结果: 该项目启动,但Web API返回500.在“输出”窗口中注意: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker:警告:filter“Microsoft.AspNet.Mvc.Filters.AuthorizeFilter”上的请求授权失败。 发布到IIS时,该项目也不起作用。 正如beta 8 声明中所述,托管模型已经发生变化,IIS正在将请求传递给Kestrel。 “ 服务器”页面未提供任何Kestrel支持Windows身份validation的指示。 是否有一些技巧可以让Windows身份validation在beta 8中运行?