小编tch*_*dze的帖子

适用于Xamarin的Genymotion Android模拟器

我有关于使用Genymotion Android模拟器进行xamarin开发的问题.

我已经安装了Genymotion桌面应用程序和其中的几个Android设备.每当我通过start按钮在Genymotion桌面应用程序中运行任何已安装的设备时,它工作正常但在Visual Studio中的可用模拟器列表中没有Genymotion模拟器,在Xamarin工作室中都没有(仅安装了内置的Android模拟器和设备在Xamarin Android播放器中).

我发现了一些关于为Xamarin使用Genymotion Emulator的文章,他们都说:

Xamarin工作室和带Xamarin的Visual Studio都发现它,没问题
我正在使用Visual Studio企业版,Xamarin商业版和Genymotion的免费版,如果这很重要的话.

android visual-studio android-emulator xamarin genymotion

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

.net核心添加Web参考

我有两个Web项目.

第一次创建大约2-3周前和今天第二次.

我想将Web Reference添加到第二个Web项目中.

第一个旧的Project Solution View

第一个旧的Project Solution View

第二个新的Project Solution View

在此输入图像描述

在新的项目中,我找不到如何添加Web Reference.我可以添加服务参考,但我不需要它.

从这里我可以添加服务参考

在此输入图像描述

但我无法添加Web引用就像它在旧项目中一样

在此输入图像描述

我应该从哪里添加Web Reference?有关Web引用的更改吗?

web-reference .net-core asp.net-core visual-studio-2017 asp.net-core-1.1

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

从F#中消耗C#事件

接下来的功能反应式编程教程,其中事件流(Observable)直接从System.Timers.Timer.Elapsed事件创建.

 let timer = new System.Timers.Timer(float 1)
 let observable = timer.Elapsed  
 observable 
 |> Observable.subscribe ...
Run Code Online (Sandbox Code Playgroud)

已经class定义了Observable

public delegate void OnMessageDelegate(Message message);

public class Notifier : INotifier
{
   public event OnMessageDelegate OnMessage;

   public void Notify(Message message) 
   => OnMessage?.Invoke(message);
}
Run Code Online (Sandbox Code Playgroud)

引用相应Notifier.OnMessageOnMessage项目,并试图建立add_OnMessageremove_OnMessage事件

 let Start (notifier : Namespace.Notifier)  = 
    notifier.OnMessage      
    |> Observable.subscribe (fun ms -> ...
    0
Run Code Online (Sandbox Code Playgroud)

获取错误消息

事件'OnMessage'具有非标准类型.如果此事件以另一种CLI语言声明,则可能需要使用事件的显式add_OnMessage和remove_OnMessage方法来访问此事件.如果在F#中声明此事件,则使事件类型为"IDelegateEvent < >"或"IEvent <,_>" 的实例化.

消息是自我描述的,我认为我的目标是从事件创建流而不是通过IDelegateEvent<_>方法订阅它.

c# events f#

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

OpenId Connect更新SPA中的access_token

尝试在由以下组件组成的Web应用程序中实现OpenId Connect

  • 身份提供者
  • 资源服务器
  • 单页应用程序充当客户端。

身份提供者和资源服务器是同一应用程序。

SPA使用密码流来获取access_token并存储到cookie中。存储access_token到cookie中具有它的安全线程,但这是另外一回事了。

问题

access_token 由IdP发行的证书将在30分钟后过期,并且SPA需要续签令牌,而无需再次要求用户提供凭据。

IdP refresh_token与一起返回access_token。每当SPA 401从Resource Server 获取时,它都会发送refresh_token到IdP并重新获取access_token

问题

发送refresh_token到SPA是不好的做法

单页应用程序(通常实现隐式授予)在任何情况下都不应获得刷新令牌。这样做的原因是该信息的敏感性。您可以将其视为用户凭据,因为“刷新令牌”允许用户基本上永远保持身份验证。因此,您不能在浏览器中拥有此信息,必须将其安全地存储。

建议的解决方案

访问令牌过期后,假设用户的SSO会话尚未过期,则可以使用静默身份验证来检索新的令牌,而无需用户交互。

我认为,当IdP和资源服务器是同一应用程序时,静默身份验证不适用于密码流。access_token由IdP发布的信息仅是可用于在资源服务器/ IdP到期后针对其授权的信息,客户端如何说服 IdP发布新的access_token?(不发送refresh_token

找到angular-oauth2-oidc库,用于refresh_token续订access_token

在这种情况下续订的最佳实践/解决方案是什么access_token

技术细节

  • 身份提供者-ASP.NET Core + Openiddict库。
  • SPA-AngularJs应用程序。

oauth-2.0 openid-connect asp.net-core openiddict

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

ASP.NET Boilerplate .NET Core 2

尝试将ASP.NET Boilerplate项目升级.NET Core 1.x.NET Core 2.0

解决方案构建成功,但在Startup.ConfigureServices方法中抛出异常

 services.AddAbpIdentity<Tenant, User, Role, SecurityStampValidator>(
     options => {})
   .AddUserManager<UserManager>()
   .AddRoleManager<RoleManager>()
   .AddSignInManager<SignInManager>()
   .AddClaimsPrincipalFactory<UserClaimsPrincipalFactory>()
   .AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)

例外细节

System.TypeLoadException: '从组件 ' '未能加载类型' Microsoft.AspNetCore.Authentication.SharedAuthenticationOptions Microsoft.AspNetCore.Authentication,版本= 2.0.0.0,文化=中性公钥= adb9793829ddae60'.'

.net c# asp.net-mvc .net-core aspnetboilerplate

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

param在c#中意味着什么(不是params)

我找到了以下属性声明.

     [param: MarshalAs(UnmanagedType.LPTStr)]
Run Code Online (Sandbox Code Playgroud)

什么param关键字在这个上下文中意味着什么,我们为什么要使用它?

c# marshalling

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

Linq表达式where子句具有泛型类型

在我的数据访问层中,我使用以下Lambda表达式调用GET方法:

public List<T> Get<T>() where T : class { var list = Context.Set<T>().ToList().Distinct().Where(x => x.Content_type == "Test"); return list; }

但是出现错误

“无法解析符号Content_type”

我该如何解决这个问题?

linq generics lambda types where

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