Tag: asp.net core

如何在Asp.Net 5中使用Entity Framework 6.x(MVC 6)

我正在使用VS 2015 CTP-6测试新的Asp.Net 5。 由于Entity Framework 7中缺少function,我现在更喜欢使用EF6。 我尝试删除EF7,然后在PM中应用EF6,如下所示: Uninstall-Package EntityFramework Install-Package EntityFramework -version 6.1.3 没有返回错误,并且project.json文件似乎相应地更新。 虽然,没有DbContext可用。 这是可能吗? 如果是的话,我该如何从这里开始? 我是否需要web.config以兼容EF6?

在.NET Core中使用Reflection

对于跨平台开发,我正在尝试创建.NET Core共享库。 我在VS 2015中使用了Class Library (package)项目模板。我的库需要在完整的.net 4框架中使用我熟悉的一些reflection机制,但我现在不知道如何在.NET Core中访问它们图书馆。 特别: Delegate类型具有Method属性,该属性返回MethodInfo对象。 Type类有一个BaseType属性, FilterName属性, InvokeMember方法和我在.NET Core中无法访问的FindMembers方法。 我添加了NuGet包,据称有我需要的reflection件: “frameworks”: { “net451”: { “dependencies”: { “System.Reflection”: “4.1.0-beta-23516”, “System.Reflection.Extensions”: “4.0.1-beta-23516”, “System.Reflection.Primitives”: “4.0.1-beta-23516”, } }, “dotnet5.4”: { “dependencies”: { “Microsoft.CSharp”: “4.0.1-beta-23516”, “System.Collections”: “4.0.11-beta-23516”, “System.Linq”: “4.0.1-beta-23516”, “System.Reflection”: “4.1.0-beta-23516”, “System.Reflection.Extensions”: “4.0.1-beta-23516”, “System.Reflection.Primitives”: “4.0.1-beta-23516”, “System.Runtime”: “4.0.21-beta-23516”, “System.Threading”: “4.0.11-beta-23516” } } }, “dependencies”: { “System.Reflection.TypeExtensions”: […]

为HTTPS配置ASP.NET Core 2.0 Kestrel

TL; DR今天使用ASP.NET Core 2.0设置HTTPS的正确方法是什么? 我想将我的项目配置为使用https和他们在BUILD 2017中展示的证书。 我尝试了几个设置,但没有任何效果。 经过一番研究,我更加困惑。 似乎有很多方法来配置URL和端口……我已经通过代码看到了appsettings.json , appsettings.json ,在launchsettings.json我们也可以设置URL和端口。 有“标准”的方法吗? 这是我的appsettings.development.json { “Kestrel”: { “Endpoints”: { “Localhost”: { “Address”: “127.0.0.1”, “Port”: “40000” }, “LocalhostWithHttps”: { “Address”: “127.0.0.1”, “Port”: “40001”, “Certificate”: { “HTTPS”: { “Source”: “Store”, “StoreLocation”: “LocalMachine”, “StoreName”: “My”, “Subject”: “CN=localhost”, “AllowInvalid”: true } } } } } } 但是当我从命令行启动dotnet run或者从Visual Studio启动调试器时,它始终需要来自launchsettings.json的url和端口。 […]

绕过.net核心中的无效SSL证书

我正在开发一个需要连接到https站点的项目。 每次连接时,我的代码都会抛出exception,因为该站点的证书来自不受信任的站点。 有没有办法绕过证书检查.net核心http? 我在以前版本的.NET中看到了这段代码。 我想我只需要这样的东西。 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

ASP.NET Core HTTPRequestMessage返回奇怪的JSON消息

我目前正在使用ASP.NET Core RC2,我遇到了一些奇怪的结果。 所以我有一个MVC控制器,具有以下function: public HttpResponseMessage Tunnel() { var message = new HttpResponseMessage(HttpStatusCode.OK); message.Content = new StringContent(“blablabla”, Encoding.UTF8); message.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(“text/plain”); message.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue { NoCache = true }; return message; } 如果我用邮递员调用此方法并将Accept标头设置为text plain,我会收到以下回复: { “Version”: { “Major”: 1, “Minor”: 1, “Build”: -1, “Revision”: -1, “MajorRevision”: -1, “MinorRevision”: -1 }, “Content”: { “Headers”: […]

每个请求的ASP.NET Core API JSON serializersettings

根据请求中的某些值(标题或在url中),我想更改DTO对象的序列化。 为什么? 好吧,我已经将[JsonProperty(“A”)]到我的DTO,但是根据客户端(网站或移动应用程序),它是否要使用该属性。 我开始了 services .AddMvc() .AddJsonOptions(opt => { #if DEBUG opt.SerializerSettings.ContractResolver = new NoJsonPropertyNameContractResolver(); #endif } 因此,在调试时,我获得了具有完整属性名称的JSON。 我使用JsonProperty属性来缩短响应JSON,这适用于移动应用程序(Xamarin),后者反序列化回到相同的DTO。 但现在我有一个网站使用相同的API通过jQuery获取数据,但在那里我想处理DTO的完整属性名称,而不是JsonProperty属性中给出的名称。 网站和WebApi位于同一台服务器上,因此如果响应更大,则没有问题。 我开始使用中间件类来响应客户标头值,这可行,但现在我不知道如何进入JSON SerializerSettings。 搜索网络但找不到它。 在搜索时我已经阅读过关于InputFormatters和OutputFormatters,以及内容协商,但我不知道我必须去哪个方向。 我不想使用不同的设置两次部署相同的API。 如果能有所帮助,我能够改变routesconfig之类的东西。 更新 不仅JSON响应必须以两种不同的方式序列化,而且反序列化必须以两种不同的方式完成。

根据操作名称授权用户

我有很多控制器有很多动作。 每个操作都有自己的角色(角色名称= ControllerName.actionName)。 在以前的版本中,我可以测试当前用户是否可以使用“通用”AuthorizeAttribute访问操作: public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { string currentAction = actionContext.ActionDescriptor.ActionName; string currentController = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName; Roles = (currentController + “.” + currentAction).ToLower(); base.OnAuthorization(actionContext); } 使用asp.net 5版本,我发现我需要使用需求( 如何在ASP.NET Core中创建自定义AuthorizeAttribute? )。 问题是AuthorizationContext没有向我们提供有关用户尝试访问的操作的信息。 我不想在每个操作上放置一个Authorize属性,有没有办法用新框架实现我的要求? (我更喜欢避免使用HttpContext.Current,它不适合管道架构)

在.NET Core中将视图返回为字符串

我发现了一些文章如何在ASP.NET中将视图返回到字符串,但无法转换为能够使用.NET Core运行它 public static string RenderViewToString(this Controller controller, string viewName, object model) { var context = controller.ControllerContext; if (string.IsNullOrEmpty(viewName)) viewName = context.RouteData.GetRequiredString(“action”); var viewData = new ViewDataDictionary(model); using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindPartialView(context, viewName); var viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw); viewResult.View.Render(viewContext, sw); return sw.GetStringBuilder().ToString(); } } […]

托管ASP.NET Core作为Windows服务

当我在RC2中得到它时,支持在Windows服务中托管应用程序。 我试图在一个简单的web api项目上测试它(使用.NET Framework 4.6.1)。 这是我的Program.cs代码: using System; using System.IO; using System.Linq; using System.ServiceProcess; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.WindowsServices; namespace WebApplication4 { public class Program : ServiceBase { public static void Main(string[] args) { if (args.Contains(“–windows-service”)) { Run(new Program()); return; } var program = new Program(); program.OnStart(null); Console.ReadLine(); program.OnStop(); } protected override void OnStart(string[] args) { […]

如何使用AddMvcCore()实现“纯”ASP.NET Core Web API

我见过很多使用默认AddMvc()服务的ASP.NET Core Web API项目,但没有意识到由于对服务的控制,使用AddMvcCore()是一个更好的选择。 您是如何使用AddMvcCore()实现ASP.NET Core Web API的?它为什么更好?