Tag: asp.net core

在blazor应用程序中自动注入javascript

我正在开发一个Blazor扩展库。 这个库中的一件事是重用javascript alert()方法。 我知道如何做到这一点,这涉及在.cshtml页面中添加: Blazor.registerFunction(‘Alert’, (message) => { alert(message); }); 这在我的代码中: public void Alert(string message) { RegisteredFunction.Invoke(“Alert”, message); } 如果你使用我的包(或者可能总是),我希望javascript部分以某种方式在html中自动注入。 不确定这是否可行(还) 有什么想法吗?

路由控制器和中间件中的操作

我正在尝试检索控制器和操作,我已经通过使用尝试了这一点 var routeData = context.GetRouteData(); 在中间件的Invoke方法中,但每次都会产生null。 是否有可能在中间件中检索路由数据? 我想要实现的是检查请求的操作是否具有[RequireToken]属性,如果是,它将检查特定标记的传入标头。

.NET Core – 尝试将存储库添加到我的API控制器,但是当我执行每个控制器方法时都会返回500错误

正如标题所说。 我正在创建一个Web API,在我的API控制器中,我正在尝试在构造函数中声明一个存储库。 我成功声明了它,但我尝试在该控制器中调用的每个API方法都返回500错误。 当我删除构造函数/存储库变量时,我没有问题。 调节器 [Route(“api/[controller]”)] public class TestController: Controller { private ITestRepository _testRepository; public TestController(ITestRepository testRepository) { _testRepository= testRepository; } [HttpGet] public IEnumerable Get() { return new string[] { “value1”, “value2” }; } } Startup.cs public void ConfigureServices(IServiceCollection services) { // Add framework services. services .AddMvcCore() .AddJsonFormatters() .AddApiExplorer(); services.AddScoped(); services.AddSwaggerGen(); } 我错过了什么吗?

如何在移动应用程序上进行身份validation后在.NET Core服务器上登录用户

我遇到了.NET Core Web API应用程序身份validation的麻烦。 我想:1)在移动应用程序(目前为iOS)上使用Google对用户进行身份validation2)使用此身份validation,使用AspNetCore.Identity和Entity Framework Core在数据库中创建用户记录3)使用相同的身份validation,从.NET Core调用Google Calendar API服务器 到目前为止,我想出了如何实现1和3,但无法绕过2号。 我的理解是,要登录用第三方认证的用户,由于文档的原因,您需要使用SignInManager实例方法ExternalLoginSignInAsync 。 它需要两个参数: 登录提供程序 (应该简单地称为“Google”)和唯一的提供程序密钥 。 我的问题是我找不到任何地方可以找到一个。 以下是我在移动应用上通过Google登录结果收到的所有内容列表: 这是我尝试调用的方法。 // POST api/signup [HttpPost] public async Task Post([FromBody]string authorizationCode, [FromBody]string userId) { var tokenFromAuthorizationCode = await GetGoogleTokens(userId, authorizationCode); var result = await signInManager.ExternalLoginSignInAsync( “Google”, tokenFromAuthorizationCode.IdToken, false); if (result.Succeeded) return true; var externalLoginInfo = new ExternalLoginInfo( […]

如何在asp.net core和ef7中的并行方法中使用注入的DbContext?

我有一个EF7的Asp.net 5 / Core 1应用程序。 我通常在DI容器中注册DbContext。 services.AddEntityFramework().AddSqlServer() .AddDbContext(options => options.UseSqlServer(connection)); 这是一个小样本,展示了我正在尝试做的事情。 public class MyController : Controller { MyDbContext _myDbContext; public MyController(MyDbContext myDbContext) { _myDbContext = myDbContext; } public IActionResult Index() { //Just start these and don’t wait for them to finish //We don’t care if they succeed or not Task.Run(() => DoSomeLogging1()); Task.Run(() => DoSomeLogging2()); […]

指定asp.net核心静态文件夹的默认文件名

我目前有一个生成的index.html,js和其他静态文件存在于一个文件夹中,我将该文件夹标记为静态文件夹(通过在Startup.cs中的Configure方法中添加以下内容: app.UseDefaultFiles(); app.UseStaticFiles(new StaticFileOptions() { FileProvider = new Path.Combine(env.ContentRootPath, @”../build”)), RequestPath = new PathString(“/app/”) }); 有没有办法将index.html设置为此* / app路由的默认响应? 因为现在localhost:5000 / app /返回404而localhost:5000 / app / index.html返回index.html。 编辑:我错过了提到我确实尝试使用app.UseDefaultFiles(),如文档中提到但它不适合我。 服务器仍然返回404

升级到Core 2 Preview 2后获取“无法解析类型的服务..”

我刚刚升级到ASP.NET Core 2 Preview 2并遇到了dependency injection的问题。 我明白了 在运行项目时,无法为类型为“LC.Tools.API.Startup”的方法“Configure”的参数“context”解析类型为“LC.Tools.API.Data.GenericDbContext”的服务。 使用旧版本时我没有遇到此问题。 DbContext(GenericDbContext): namespace LC.Tools.API.Data { public class GenericDbContext : DbContext { public GenericDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder builder) { //Generic builder.Entity(); builder.Entity(); . . . . . //Shop builder.Entity().ToTable(“ShopClient”); builder.Entity().ToTable(“ShopCategory”); . . . . . . } } Startup.cs: namespace LC.Tools.API { […]

ASP.NET Core在不允许方法时返回自定义响应

我正在使用ASP.NET Core来构建REST服务 如果用户尝试使用不支持的方法请求端点,我需要返回自定义响应代码。 例如,端点localhost / api / test仅支持GET方法,但用户使用POST方法请求它。 我需要返回404响应和自定义正文。 如何使用ASP.NET Core执行此操作? UPD: 可能我错误地提出了我的问题。 如果不允许某个方法,我需要ASP Core返回405响应代码和自定义JSON主体。 这应该是一个标准的行为,但还没有实现(根据这个问题 )所以我希望解决方法返回405响应代码然而ASP Core不支持它开箱即用。

ASN.NET Core 2.0 Facebook身份validationExternalLoginSignInAsync失败(IsNotAllowed)

我正在使用Ddentity在ASP.NET Core 2.0中创建一个新的应用程序。 我根据文档启用了Facebook身份validation。 现在正在运行的流程如下: 当新用户从Facebook进行身份validation时,应用程序会要求发送电子邮件以便用于该应用程序 当用户提供电子邮件时,在我的dbo.AspNetUsers表中创建用户并使用用户提供的电子邮件,并在我的dbo.AspNetUserLogins中创建一个新行,并引用提供者,providerKey和userId。 那时我可以看到在我的数据库中所有行都有正确的数据。 现在,当用户注销并尝试在某个时候再次使用facebook登录时,应用程序会检查用户是否可以通过以下方式使用提供者凭据登录: // Sign in the user with this external login provider if the user already has a login. var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor: true); 此时,我的结果是NotAllowed(属性IsNotAllowed = true),它要求用户输入新的电子邮件(就像新用户的原始流程一样)。 当然,电子邮件已经注册,用户无法创建新帐户,因为他不应该这样做。 我的ExternalLoginCallback控制器是项目的默认实现。 [HttpGet] [AllowAnonymous] public async Task ExternalLoginCallback(string returnUrl = null, string remoteError = null) { […]

为什么Asp.Net核心认证方案是强制性的

我非常沮丧的是,在Asp.Net Core中,身份validation方案似乎是强制性的。 我的目标是构建一个API,我不想知道客户端的任何信息。 我已经建立了自定义身份validation和授权,工作正常。 我没有使用身份或cookie。 但是,如果没有有效的身份validation方案,我将无法返回403 Forbid结果,否则会出现以下exception… System.InvalidOperationException:没有配置身份validation处理程序来处理该方案:自动 我的问题是,我是否可以将MVC配置为不使用身份validation方案或创建身份validation方案而不依赖于登录路径或任何路径?