我正在尝试为用户管理管理页面提取所有Identity用户及其相关角色.我认为这相当容易,但显然不是.我尝试过以下解决方案:https://stackoverflow.com/a/43562544/5392786但到目前为止还没有解决.
这是我到目前为止:
ApplicationUser:
public class ApplicationUser : IdentityUser
{
public List<IdentityUserRole<string>> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
的DbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
Run Code Online (Sandbox Code Playgroud)
启动标识代码
services.AddIdentity<ApplicationUser, IdentityRole>(options => options.Stores.MaxLengthForKeys = 128)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)
我想要显示列表的Razor Page:
public class IndexModel : PageModel
{
private readonly UserManager<ApplicationUser> userManager;
public IndexModel(UserManager<ApplicationUser> userManager)
{
this.userManager = userManager;
}
public IEnumerable<ApplicationUser> Users { get; set; }
public void OnGetAsync()
{
this.Users = userManager.Users.Include(u => …Run Code Online (Sandbox Code Playgroud) c# mysql entity-framework-core asp.net-core asp.net-core-identity
所以我们最近一直在研究Azure Service Bus,我们对是否应该使用无限循环轮询队列/订阅或者是否应该使用OnMessage回调/消息泵功能感到困惑.什么会执行更少的操作,从而降低成本?
理想情况下,我们需要一个事件驱动的系统,因此我们不会浪费操作,而且通常只是一种更好的方法.
我的问题是,使用OnMessage定义为"在事件驱动的消息泵中处理消息"真的是事件驱动的吗?
如果你看看这个页面(QueueClient.OnMessage):https://msdn.microsoft.com/library/azure/microsoft.servicebus.messaging.queueclient.onmessage.aspx 你会注意到底部的评论它基本上是一个无限循环的包装器,它调用Receive()方法.这对我来说听起来不是事件驱动的.
现在,如果您查看此页面(SubscriptionClient.OnMessage):https: //msdn.microsoft.com/en-us/library/azure/dn130336.aspx,该注释不存在.那么主题/订阅和队列是一样的,还是它实际上是订阅的事件驱动而不是队列?
为什么他们甚至说这是事件驱动的,显然不是?QueueClient.OnMessage页面上的注释具有"无限循环"和"每个接收操作是可计费事件"这一事实有点可怕.
另外,我并不是真的担心它会花多少钱/多少钱,我更感兴趣的是让它尽可能高效.
我正在尝试创建一个应用程序,该应用程序将在客户进行购买时向他们发送电子邮件。我们有自己的 GMail 帐户,我将用它来发送电子邮件。
我已经在 Google API 控制台中设置了我的应用程序并创建了凭据。我在 MailKit 的 GitHub 上发现了这个问题,它看起来很简单,但似乎对我不起作用。
这是我的代码:
var secrets = new ClientSecrets
{
ClientId = [CLIENTID]
ClientSecret = [SECRET]
};
var googleCredentials = await GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, new[] { GmailService.Scope.MailGoogleCom }, email, CancellationToken.None);
await googleCredentials.RefreshTokenAsync(CancellationToken.None);
using (var client = new SmtpClient())
{
client.Connect("smtp.gmail.com", 587);
var credentials = new NetworkCredential(googleCredentials.UserId, googleCredentials.Token.AccessToken);
client.Authenticate(credentials);
await client.SendAsync(message);
client.Disconnect(true);
}
Run Code Online (Sandbox Code Playgroud)
调用Authenticate给出了以下错误:
MailKit.Security.AuthenticationException : AuthenticationInvalidCredentials: 5.7.8 用户名和密码不被接受。在 5.7.8 https://support.google.com/mail/?p=BadCredentials m3-v6sm3447324wrs.39 - gsmtp 中了解更多 信息
例外中的 Google 支持页面基本上只是说要么使用两步验证 + 应用密码,要么启用不太安全的应用。这两个我都不想要。为什么在 …
我对 React 很陌生,所以如果这只是重复,我深表歉意 - 我试图寻找其他问题的解决方案,但没有一个对我有帮助。
我希望 React 组件在页面的查询字符串更改时重新渲染。我有一个基本的联系表单,并且我正在使用通过查询字符串传递的值预填充一个字段。我的理解是,只要状态或组件发生变化,React 就应该重新渲染组件,并且看到查询字符串是 props (this.) 的一部分,那么我认为这很容易,但情况似乎并非如此我。
路线
<Route exact path="/contact-us" component={ContactUs} />
Run Code Online (Sandbox Code Playgroud)
成分
import React, { PureComponent, Fragment } from 'react';
import bannerImage from './../../assets/images/contact-banner.jpg';
import QueryString from 'query-string';
class ContactUs extends PureComponent {
render() {
return (
<Fragment>
<CommonBanner banner={bannerImage} title="Contact us" />
<ContactUsForm tripName={QueryString.parse(this.props.location.search).tripName)} />
</Fragment>
);
}
}
export default ContactUs;
Run Code Online (Sandbox Code Playgroud)
我希望在以下情况下重新呈现联系表单: 用户从通过查询字符串发送行程名称的位置单击,然后单击页面标题中链接到“联系我们”的“联系我们”按钮再次页面,但查询字符串中没有行程名称。然后,这应该删除行程名称字段的预填充。
更新
我注意到,如果我手动从浏览器中的 URL 中删除查询字符串,则该字段会按预期被清空。只有当我单击菜单中仅链接到“联系我们”的链接时,似乎什么也没有发生。
我刚刚开始研究带有实体框架的.NET Core。我以前将.NET Framework与Ninject一起使用,但现在尝试使用.NET Core中内置的DI。
我有一TestBase门课,我的考试将由此而来。我希望此类负责使用[OneTimeSetUp]和创建和删除测试数据库[OneTimeTearDown]。问题是我似乎无法弄清如何在设置和拆卸方法中访问我的DI服务。这些方法不能具有参数,并且我的TestBase类必须具有无参数的构造函数,因此也无法从那里获得它们。
[SetUpFixture]
public partial class TestBase
{
protected IEFDatabaseContext DataContext { get; set; }
public TestBase(IEFDatabaseContext dataContext)
{
this.DataContext = dataContext;
}
[OneTimeSetUp]
public void TestInitialise()
{
this.DataContext.Database.EnsureCreated();
}
[OneTimeTearDown]
public void TestTearDown()
{
this.DataContext.Database.EnsureDeleted();
}
}
Run Code Online (Sandbox Code Playgroud)
上面给出了以下错误:
TestBase没有默认的构造函数。
我可能会以错误的方式进行操作,但这是我过去一直做的事情,因此,请让我知道使用.NET Core DI时是否有更好的方法。
Startup 类参考:
public class Startup
{
private readonly IConfiguration config;
public Startup(IConfiguration config)
{
this.config = config;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TestDataContext>(
options …Run Code Online (Sandbox Code Playgroud) c# integration-testing entity-framework dependency-injection asp.net-core
react-loadable由于我的应用程序变得太大而无法执行此操作,因此我正在使用代码拆分。这一切正常,但 CSS 嵌入在这些新的 JavaScript 块中,然后似乎动态加载到页面中。我希望来自每个块的 CSS 位于单独的文件中,而不是在 JS 文件本身中。我可以在不自行弹出和修改 Webpack 配置的情况下完成此操作吗?如果可能的话,我真的很想避免这种情况。
编辑: 我刚刚弹出来看看实际的 Webpack 配置在做什么。以下评论确认了我遇到的问题,但没有提供解决方案:
注意最后一句话:
但是,如果您使用代码拆分,任何异步包仍将使用异步代码中的“样式”加载器,因此来自它们的 CSS 不会出现在主 CSS 文件中。
我有一个现有的 MVC 项目,我正在尝试将 Blazor 集成到其中。为此,我必须从 .NET Core 2.1 升级到 3.1 并更改启动类中的一些内容,以使应用程序像以前一样工作。
整理完所有升级内容后,我现在已将集线器添加到我的Configure启动方法中:
...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllers();
endpoints.MapRazorPages();
endpoints.MapBlazorHub();
});
Run Code Online (Sandbox Code Playgroud)
...和服务器签署 Blazor 服务注册:
...
services
.AddMvc(options =>
{
...
})
.AddRazorOptions(o =>
{
...
})
.AddRazorPagesOptions(options =>
{
...
});
services.AddServerSideBlazor();
Run Code Online (Sandbox Code Playgroud)
最后,我已将 Blazor JS 脚本添加到我的~/Pages/Shared/_Layout.cshtml视图中:
<script src="~/_framework/blazor.server.js"></script>
Run Code Online (Sandbox Code Playgroud)
@page当组件位于视图中时,我正在努力弄清楚新 Razor 组件的值应该是多少。
这是我的文件夹结构:
Pages文件夹内的所有内容都是新的。
以下是内容Index.razor:
@page "/"
<h3>Sales Homepage</h3>
@code {
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下@page …
我正在尝试使用EF Core配置以下所示的两个实体:
用户:
public class User
{
public int UserId { get; set; }
public string Title { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
[Required]
public string Email { get; set; }
[NotMapped]
public string FriendlyIdentifier
{
get
{
var name = $"{Name} {Surname}";
if (!string.IsNullOrWhiteSpace(name))
return name;
else if (!string.IsNullOrWhiteSpace(Email))
return Email;
else
return UserId.ToString();
}
}
public ICollection<Booking> Bookings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用户详细信息:
public class …Run Code Online (Sandbox Code Playgroud) c# asp.net entity-framework entity-framework-core asp.net-core
我知道这之前已经被问过多次,但现有的问题或答案都没有帮助我。
查询 Elasticsearch 时出现以下错误:
[nested] 未能在路径 [departures] 下找到嵌套对象
我正在运行的查询如下:
{
"explain":true,
"from":0,
"query":{
"nested":{
"path":"departures",
"query":{
"term":{
"departures.yearMonth":{
"value":202007
}
}
}
}
},
"size":20
}
Run Code Online (Sandbox Code Playgroud)
我的映射如下:
{
"tours":{
"mappings":{
"properties":{
"departures":{
"type":"nested",
"properties":{
"guaranteed":{
"type":"boolean"
},
"spacesRemaining":{
"type":"long"
},
"startDate":{
"type":"date"
},
"yearMonth":{
"type":"long"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,从 Kibana 截取的屏幕截图显示我的索引中有一个有效条目。

任何想法为什么这个查询会像这样失败?
我有一个Pomelo.EntityFrameworkCore.MySql安装了包的 DAL.EntityFramework 项目。我还有一个安装了 MySql.Data 包的 DAL.MySQL 包。第二个项目用于与 EntityFramework 无关的一般 MySQL 内容。
在 DAL.EntityFramework 中,我有一个使用 ADO.NET 的方法,以便我可以INSERT ... ON DUPLICATE KEY UPDATE对我的数据库执行操作(否则无法使用)。
public async Task<int> SmartUpsert(UserDetails user)
{
var dbQuery = this.queryProvider.SmartUpsert(user);
using (var command = this.Context.Database.GetDbConnection().CreateCommand())
{
command.CommandText = dbQuery.Query;
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddRange(dbQuery.Params.ToArray());
this.Context.Database.OpenConnection();
command.ExecuteNonQuery();
this.Context.Database.CloseConnection();
return Convert.ToInt32(command.Parameters["@Output"].Value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
queryProvider注入到类中,实现在 TAP.MySQL 中。这用于提供所需的特定于提供程序的 SQL,而无需将 EF 项目键入特定的 SQL 提供程序。它还创建参数集合(因为这些也是特定于提供程序的)。
public DbQuery SmartUpsert(UserDetails user)
{
var query = new DbQuery
{
Query = "SmartUpsertUserDetails"
};
var …Run Code Online (Sandbox Code Playgroud) c# ×8
asp.net-core ×6
asp.net ×2
mysql ×2
reactjs ×2
azure ×1
blazor ×1
css ×1
email ×1
google-oauth ×1
javascript ×1
nest ×1
oauth-2.0 ×1
query-string ×1
routes ×1
servicebus ×1
webpack ×1