Tag: asp.net core

使用ASP.Net vNext发送邮件

在传统的ASP.Net和.Net中,发送邮件是通过驻留在System.dll System.Net.Mail类完成的。 现在使用KRE,vNext似乎没有将System.Net.Mail作为单独的包。 引用project.json的”net453″框架 “frameworks”: { “aspnet50”: { }, “aspnetcore50”: { }, “net453”: {} // <<< throws compilation errors }, 因为以下错误导致所有地狱崩溃: .NET Framework 4.5.3错误CS0234:名称空间“Microsoft”中不存在类型或命名空间名称“AspNet”(您是否缺少程序集引用?) 它实际上抱怨作为kpm包的一部分的所有vNext依赖项。 那么,有没有人想出一种使用ASP.Net vNext发送邮件的方法呢? 注意 即使System出现在References下,即使Intellisense显示System.Net.Mail可供使用,代码也无法编译。 例如,这样的简单陈述虽然看似有效, using System.Net.Mail; var m = new MailMessage(); 将抛出编译错误,例如: ASP.NET Core 5.0错误CS0234:名称空间“System”中不存在类型或命名空间名称“Net”(您是否缺少程序集引用?) ASP.NET Core 5.0错误CS0246:找不到类型或命名空间名称“MailMessage”(您是否缺少using指令或程序集引用?) 更新 使用最新的Visual Studio 2015 CTP 5,他们似乎修复了智能感知故障。 现在, System.Net不再具有Mail命名空间。 在旁注中,我使用VS 2015预览创建的vNext项目不再有效 – […]

未指定authenticationScheme,并且未找到DefaultChallengeScheme Cookies身份validation

我使用下面的代码在ASP.NET Core 2.0中使用cookie进行身份validation services .AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(“MyCookieMiddlewareInstance”, options => { options.AccessDeniedPath = new PathString(“/Account/Login”); options.LoginPath = new PathString(“/Account/Login”); options.LogoutPath = new PathString(“/Account/LogOff”); }); 我收到一个错误: 未指定authenticationScheme,并且未找到DefaultChallengeScheme Cookie设置如下: var claims = new List { new Claim(ClaimTypes.NameIdentifier, userId.ToString()), new Claim(ClaimTypes.Name, userName) }; var identity = new ClaimsIdentity(claims, “Forms”); identity.AddClaim(new Claim(ClaimTypes.Role, “ADMIN”)); var principal = new ClaimsPrincipal(identity); HttpContext.Authentication.SignInAsync(“MyCookieMiddlewareInstance”, principal, new […]

如何使用ASP.NET Core显示错误

我有一个相当简单的网站,我正在使用ASP.NET Core。 我从命令行运行应用程序,网站返回静态文件,但当我尝试发出应由MVC处理的请求时,我一直收到500错误。 我怎么看错误是什么? 无论错误是显示给浏览器还是记录到控制台都没关系,我只想找到错误的方法。

用于Windows x64的ASP.NET核心应用程序(.NET Framework)仅在project.assets.json中出错

我想使用VS 2017简化我的ASP.NET核心Web应用程序(.NET Framework)应用程序中的配置。 我已经知道我的网站将在x64环境下的Windows / IIS和.NET 4.6.2下运行。 在此应用程序的预见和未预见的未来中,没有机会使用从开发到生产的任何其他环境。 所以,我只需要Debug x64和Release x64模式。 (不需要AnyCPU和x86!),所以我继续从项目中删除了所有其他配置。 现在,在编译时,我收到以下错误: ‘C:\ Projects \ MyProject \ My.Website \ obj \ project.assets.json’没有’.NETFramework,Version = v4.6.2 / win7-x64’的目标。 确保已为TargetFramework =’net462’和RuntimeIdentifier =’win7-x64’恢复此项目。 MD.Website C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.targets 我在Windows 7上开发,我不知道如何解决这个问题。 任何的想法?

ASP.NET Core中的模型绑定将下划线映射到标题案例属性名称

我有一个模型类,我想在我的ASP.NET MVC Core(RC2)应用程序中绑定查询字符串。 我需要在查询字符串键中支持下划线以确认OAuth规范,但我想在我的应用程序中使用标题案例属性名称。 我的模型类看起来像这样: class OauthParameters { public string ClientId {get; set;} public string ResponseType {get; set;} public string RedirectUri {get; set;} } 所以我想将查询字符串如client_id , response_type和redirect_uri绑定到它。 ASP.NET MVC Core有没有办法自动或通过属性注释来实现? 我已经阅读了一些关于编写自定义模型绑定器的文章,但是这些似乎(1)对于我想要实现的内容而言过于复杂,并且(2)是为RC1或更早版本编写的,并且一些语法已经改变。 提前致谢。

有没有什么好的理由不在核心MVC中使用ViewComponent而不是Partial View?

我是MVC的新手,并决定从.net-core开始,所以我对核心版本与旧版本的差异没有多少了解。 我确实找到了以下问题提供了一些见解,但没有帮助我决定我是否可以基本上忽略部分观点。 为什么我们应该在部分视图上使用MVC 6function视图组件:有什么区别? 我的问题很简单 – 如果我可以使用ViewComponent做某事,有什么理由不这样做吗? 非常感谢! 下面提供了上下文的示例。 主视图调用: ViewComponent: @await Component.InvokeAsync(“CreatePerson”, new Person()) 部分视图: @{ await Html.RenderPartialAsync(“People/CreatePartialView”, new Person());} Javascript(personCreateForm是局部视图/视图组件中的一个表单): var submitPersonCreate = function(evt) { evt.preventDefault(); if ($(this).valid()) { $.ajax({ type: “POST”, url: ‘@Url.Action(“CreatePartial”, “People”)’, data: $(‘#personCreateForm’).serialize(), success(data) { if (data === true) window.location.reload(); else $(‘#modalPersonInner’).html(data); } }); } return false; } $(‘#personCreateForm’).submit(submitPersonCreate); […]

ASP.NET Core RC2项目参考“无法解析依赖关系X”

概观 我有一个ASP.NET Core RC2 .NET框架Web项目,我想在同一解决方案中包含的常规C#类库中添加一个项目引用。 重现的步骤: 使用Visual Studio 2015 Update 2 文件 – >新项目 – > ASP.NET Core Web Application (.NET Framework) 右键单击解决方案 – >新建项目 – > Class Library 我没有做这些: Class Library (.NET Core) Class Library (Portable for iOS, Android, and Windows) Class Library (Portable) 将以下内容添加到project.json中的dependencies : “ClassLibrary1”: { “version”: “*”, “target”: “project” } 问题 […]

无法访问IIS 8上虚拟dotnet核心api应用程序下的虚拟目录

我正在尝试将虚拟目录添加到我的dotnet核心API。 但它给了我一个404。 This api.project.nl page can’t be found No web page was found for the web address: https://api.project.nl/v1/uploads/profiles/profile.jpeg 我已经在主IIS网站下将我的api设置为v1 ,如下面的IIS项目配置中所示。 api工作正常,我甚至可以访问我的wwwroot的/docs文件夹,它提供index.html (用于自定义swagger ui文档)。 我可以访问Projects – Api文件夹下的uploads文件夹 https://api.project.nl/uploads/profiles/profile.jpeg 但它无法访问v1虚拟应用程序下的uploads文件夹。 https://api.project.nl/v1/uploads/profiles/profile.jpeg 知道为什么吗? 我不确定它是否可能,会对这方面的一些指示表示赞赏。 我已经看到了一些相关的问题,例如这里,但我的配置只是更进一步。 他们谈论UseFileServer ( 文档和他们让它使用它,但我似乎无法让它工作所有。不确定我需要它。 不确定是否需要,但这是我的StartUp.cs public class Startup { public IConfigurationRoot Configuration { get; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() […]

如何在websocket请求期间validationJWT。 .net核心

我正在开发一个使用JWT身份validation和websockets的小型.net核心应用程序。 我已经成功实现了为标准web api控制器生成和validation令牌。 但是,我还想validationWebSocket请求的令牌,这当然不适用于[Authorize]属性。 我已经设置了我的中间件管道,如下所示: app.UseWebSockets(); app.Use(async (http, next) => { if (http.WebSockets.IsWebSocketRequest == false) { await next(); return; } /// Handle websocket request here. How to check if token is valid? }); // secretKey contains a secret passphrase only your server knows var secretKey = …..; var signKey = new SigningCredentials ( new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey)), […]

对于未经身份validation的重定向到URL而不是401

我正在使用ASP.Net 5 MVC 6和JWT令牌,这些令牌是在用户位于该站点是其子域的另一个站点时创建的。 我的目标是将令牌和请求一起传递给此子域。 如果用户碰巧尝试在没有标题中的正确令牌的情况下来到此子域名url,那么我想将它们重定向到主站点登录页面。 在对最新的RC-1版本感到非常沮丧之后,使用带有SecureKey而不是证书的JWT令牌。 我终于通过使用RC-2夜间构建版本来使用我的代码。 现在我的问题是,我希望能够在未经身份validation的用户的情况下重定向到外部URL。 以下是我的身份validation代码示例: var key = “mysupersecretkey=”; var encodedkey2 = Convert.FromBase64String(key); app.UseJwtBearerAuthentication(options => { options.AutomaticAuthenticate = true; options.AutomaticChallenge = true; options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(encodedkey2); options.TokenValidationParameters.ValidIssuer = “https://tv.alsdkfalsdkf.com/xxx/yyy”; options.TokenValidationParameters.ValidateIssuer = true; options.TokenValidationParameters.ValidAudience = “https://www.sdgfllfsdkgh.com/”; options.TokenValidationParameters.ValidateAudience = true; options.Configuration = new Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration() { Issuer = “https://tv.sdfkaysdf.com/xxx/yyy” }; }); 现在我看到其他使用OpedId的例子,他们很容易,有一个名为RedirectUrl的参数 app.UseOpenIdConnectAuthentication(options […]