小编Jea*_*ean的帖子

部署后ASP.Net核心身份登录状态丢失

我正在使用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)

但问题仍然存在:

  • 用户登录
  • 停止网站
  • 开始网站
  • 用户需要再次登录

但我也这样说:

  • 用户登录
  • 重启网站
  • 用户仍然登录

什么可以导致用户注销?有关如何避免这种情况的任何想法?

asp.net iis asp.net-identity asp.net-core

23
推荐指数
2
解决办法
3335
查看次数

Onedrive API与LiveSDK

我正在为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错误答案).

如果有人有更好的解决方案,我会接受建议:)

live-sdk onedrive windows-phone-8.1

15
推荐指数
1
解决办法
941
查看次数

如何避免在EF Core中插入后选择插入的实体?

我有很多插入文件,仅用于在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

6
推荐指数
1
解决办法
673
查看次数

在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服务(地理编码),它不需要回答,但是可以很好地处理日志(我需要坐标的城市/国家/地区)。

entity-framework asp.net-core-mvc asp.net-core

5
推荐指数
2
解决办法
740
查看次数

在ASP.Net Core上使用自动重新生成的内存缓存

我想没有内置的方法来实现这一点:

我有一些缓存数据,需要始终保持最新(间隔为几十分钟).它的生成大约需要1-2分钟,因此它有时会导致超时请求.

对于性能优化,我把它放入内存缓存,使用Cache.GetOrCreateAsync,所以我肯定可以在40分钟内快速访问数据.但是,缓存过期仍需要时间.

我希望有一种机制可以在数据到期之前自动刷新数据,因此用户不会受到此刷新的影响,并且仍然可以在刷新期间访问"旧数据".

实际上,它会添加一个"过期前"流程,以避免数据到期达到其期限.

我觉得这不是默认IMemoryCache缓存的功能,但我可能错了?它存在吗?如果没有,您将如何开发此功能?

我正在考虑使用PostEvictionCallbacks,在35分钟后删除一个条目集,这将触发更新方法(它涉及DbContext).

caching in-memory asp.net-core

5
推荐指数
1
解决办法
3473
查看次数

确定在 ASP.NET Core 网站上响应的中间件

有没有办法确定(在返回途中)哪个中间件响应了请求?某处是否有堆栈跟踪或类似的东西?

我所寻求的可能是直到最后一个中间件调用的堆栈跟踪,可在 httpcontext 对象中访问。

我可以添加一些假中间件只是设置标志,但我更喜欢不需要添加代码的东西。

例如,区分由静态文件提供的请求和由 MVC 提供的请求(这是一个示例,但并非详尽无遗,我有几个中间件提供响应,我希望能够确定哪个)。

c# asp.net-core

5
推荐指数
1
解决办法
314
查看次数

如何将命令绑定到StackPanel或Grid tap事件?

我已经看到了一些关于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类中)

---编辑---

为了简化问题,我使用以下模型: …

c# xaml windows-phone-8.1

4
推荐指数
1
解决办法
7342
查看次数

在c#中将Guid转换为2个长整型,并将2个长整型转换为Guid

Guid是一个128bits的结构,long是一个Int64所以64位的结构,因此Guid可以用来表示两个long,并且两个long可以存储在一个Guid中。

我一直在寻找一种可靠的方法来执行 Guid 到 2 long 的转换以及周围的方法,主要是为了获得一种向外部服务提供跟踪 id 的简单方法。

目标是获得一种可逆的方式来传递单个参数 2 个长整型,并稍后将其解码回来(当然,它不打算在另一端“解码”使用)。它就像外部服务的会话 ID。

.net c# .net-core

3
推荐指数
1
解决办法
2736
查看次数

如何在 ASP NET Core 依赖注入中获取所有已注册的 DbContext(或服务)

我有一个 ASP.NET Core 2.1 站点,注册了几个 DbContext 和一些条件连接字符串。

出于调试目的,我想列出所有DbContext已注册的及其连接字符串,以确保一切都配置良好。

这只是一个“测试”功能,不用于任何其他用途,所以请不要回答“你不应该这样做”、“这是反模式”等。

dependency-injection dbcontext asp.net-core

3
推荐指数
1
解决办法
1469
查看次数

在 Entity Framework Core 中的其他上下文中加载属性

我有 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 属性?

entity-framework entity-framework-core asp.net-core

2
推荐指数
1
解决办法
1419
查看次数

如何在 Maui Blazor 中共享 Maui 服务和 Blazor 服务的 ServiceProvider

我正在尝试弄清楚如何在 MauiBlazor 项目中共享 Maui 和 Blazor 之间的服务。目标是能够使用相同的单例,而无需在某处存储这些单例的静态实例。

c# blazor maui maui-blazor

1
推荐指数
1
解决办法
1859
查看次数