我正在使用ASP.Net Core和MS Identity,我试着理解为什么在每次部署后登录用户都会被注销.我在IIS 8.5上运行
我一直在尝试此线程中的方法(设置静态机器密钥) ASP.NET Identity 2在部署后 通过在IIS UI中的服务器级别生成静态密钥并将以下内容添加到网站的web.config来重新登录:
<system.web>
<machineKey validationKey="XXX"
decryptionKey="XXX"
validation="SHA1" decryption="AES"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在:
但我也这样说:
什么可以导致用户注销?有关如何避免这种情况的任何想法?
我正在为WP8.1开发,可能会在其他平台上移植.我想集成OneDrive功能,但是,我无法理解LiveSDK(来自NuGet包)和OneDrive API之间的区别.
似乎Microsoft根本就没有沟通,我真的不明白为什么.据我所知,它LiveSDK是旧的,将被替换为OneDrive API,但LiveSDK似乎更简单的使用,我无法理解他们的逻辑...最重要的是最近都更新(4月为LiveSDK).
OneDrive API,还是继续LiveSDK?基于面向未来的视力,我会去寻找OneDrive API,但我主要担心的是:
是否可以轻松登录而OneDrive API不是Live SDK?(以下工作临时解决方案)
现在,我已经能够LiveSDK使用单个按钮和三行代码登录,根本不需要用户输入,其中打开Webcontrol AuthenticateAndContinue所使用的方法OneDrive API需要手动输入登录名和密码.
最后我使用了LiveSDK身份验证并使用随附的访问令牌OneDrive API.从我的角度来看,这不是一个干净的方法,但我无法让AuthenticateAndContinue方法工作(我在登录后得到404错误答案).
如果有人有更好的解决方案,我会接受建议:)
我有很多插入文件,仅用于在Azure DB上进行日志记录,并且我看到现在大多数DTU用法都被该日志记录占用。
数据库的负载不是因为插入本身,而是因为插入之后,而是因为该CreationDate字段由数据库生成,并且EFCore在插入之后选择了它。
为了解决“ datetime2”错误转换,我将CreationDate字段定义为entity.Property(e => e.CreationDate).HasColumnType("datetime").HasDefaultValueSql("getdate()");
因此,EF在插入后调用数据库:
(@p0 uniqueidentifier)SELECT [CreationDate]
FROM [MyLogs]
WHERE @@ROWCOUNT = 1 AND [Id] = @p0
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以避免这种行为,只是让插入后不跟踪实体?
现在,我看到的唯一方法是忽略实体模型中的CreationDate字段,因为它没有被使用。 entity.Ignore(e => e.CreationDate);
entity-framework-core .net-core azure-sql-database asp.net-core
我有一个使用EFCore的ASP.NET Core网站。我想做一些工作,例如登录到数据库,但是在将响应发送给用户以便更快回答之后。
我可以在其他线程中执行此操作,但是由于对DbContext的异步访问,我不确定它是否安全。有什么推荐的方法吗?
public async Task<IActionResult> Request([FromForm]RequestViewModel model, string returnUrl = null)
{
try
{
var newModel = new ResponseViewModel(model);
// Some work
return View("RequestView",newModel)
}
finally
{
// Some analysis on the request
// I would like to defer this part
await Log(model);
}
}
Run Code Online (Sandbox Code Playgroud)
原因之一是我想调用一个Web服务(地理编码),它不需要回答,但是可以很好地处理日志(我需要坐标的城市/国家/地区)。
我想没有内置的方法来实现这一点:
我有一些缓存数据,需要始终保持最新(间隔为几十分钟).它的生成大约需要1-2分钟,因此它有时会导致超时请求.
对于性能优化,我把它放入内存缓存,使用Cache.GetOrCreateAsync,所以我肯定可以在40分钟内快速访问数据.但是,缓存过期仍需要时间.
我希望有一种机制可以在数据到期之前自动刷新数据,因此用户不会受到此刷新的影响,并且仍然可以在刷新期间访问"旧数据".
实际上,它会添加一个"过期前"流程,以避免数据到期达到其期限.
我觉得这不是默认IMemoryCache缓存的功能,但我可能错了?它存在吗?如果没有,您将如何开发此功能?
我正在考虑使用PostEvictionCallbacks,在35分钟后删除一个条目集,这将触发更新方法(它涉及DbContext).
有没有办法确定(在返回途中)哪个中间件响应了请求?某处是否有堆栈跟踪或类似的东西?
我所寻求的可能是直到最后一个中间件调用的堆栈跟踪,可在 httpcontext 对象中访问。
我可以添加一些假中间件只是设置标志,但我更喜欢不需要添加代码的东西。
例如,区分由静态文件提供的请求和由 MVC 提供的请求(这是一个示例,但并非详尽无遗,我有几个中间件提供响应,我希望能够确定哪个)。
我已经看到了一些关于WP8或其他的答案,但似乎WP8.1中没有触发器(或者我错过了什么?)
我有一个从代码绑定的datatemplate(它是一个hub datatemplate,我有混合的静态和动态hubsections,因此需要从代码中设置此datatemplate).
此datatemplate在单独的xaml文件中定义,它包含一个列表框(或listview),其中包含为项目定义的另一个datatemplate.
我需要在项目的tap或listbox selectionchanged上绑定命令(或类似的东西).但是,模板中定义的tap事件未被调用,因此我想到在UI元素上绑定命令,但这些似乎不支持Commands和交互触发器.
有关如何处理的任何线索?:)
在下面的示例中,我没有得到事件Item_Tapped和ListBox_SelectionChanged,我反正将它们中的一个绑定到viewmodel中的命令.
<DataTemplate x:Key="HubSectionTemplate">
<Grid>
<ListBox ItemsSource="{Binding MyNodes}"
SelectionChanged="ListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="64" Tapped="Item_Tapped" >
<TextBlock Text="{Binding MyText}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
这是从代码中使用它的方式:
HubSection hs = new HubSection()
{
ContentTemplate = Application.Current.Resources[HUBSECTION_TEMPLATE] as DataTemplate,
DataContext = model,
Tag = model.UniqueId,
};
Hub.Sections.Insert(firstSectIdx + 1, hs);
public class Model
{
public Guid UniqueId {get;set;}
public List<ItemModel> MyNodes {get;set;}
}
public class ItemModel
{
public string MyText {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
PS:ItemModel在另一个程序集中定义,因此不应编辑(如果可能,该命令应该在Model类中)
---编辑---
为了简化问题,我使用以下模型: …
Guid是一个128bits的结构,long是一个Int64所以64位的结构,因此Guid可以用来表示两个long,并且两个long可以存储在一个Guid中。
我一直在寻找一种可靠的方法来执行 Guid 到 2 long 的转换以及周围的方法,主要是为了获得一种向外部服务提供跟踪 id 的简单方法。
目标是获得一种可逆的方式来传递单个参数 2 个长整型,并稍后将其解码回来(当然,它不打算在另一端“解码”使用)。它就像外部服务的会话 ID。
我有一个 ASP.NET Core 2.1 站点,注册了几个 DbContext 和一些条件连接字符串。
出于调试目的,我想列出所有DbContext已注册的及其连接字符串,以确保一切都配置良好。
这只是一个“测试”功能,不用于任何其他用途,所以请不要回答“你不应该这样做”、“这是反模式”等。
我有 2 个独立的数据库,因此在 ASP.Net Core/EFCore 中有 2 个独立的 DbContext。
我有一个位于一个数据库中的对象,它有一个指向另一个数据库的“外键”。
假设我有一个包含事件的数据库和另一个包含城市的地理数据库。我的活动课上有一个 cityId。
public class Event
{
public int Id {get;set;}
public string Name {get;set;}
public string CityId {get;set;}
public virtual City City {get;set;}
}
public class City
{
public int Id {get;set;}
public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
Include查询第一个 DbContext 时是否可以以某种方式访问 City 属性?
我正在尝试弄清楚如何在 MauiBlazor 项目中共享 Maui 和 Blazor 之间的服务。目标是能够使用相同的单例,而无需在某处存储这些单例的静态实例。