我有关于使用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的免费版,如果这很重要的话.
我有两个Web项目.
第一次创建大约2-3周前和今天第二次.
我想将Web Reference添加到第二个Web项目中.
第一个旧的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
接下来的功能反应式编程教程,其中事件流(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.OnMessage
成OnMessage
项目,并试图建立add_OnMessage
从remove_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<_>
方法订阅它.
尝试在由以下组件组成的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 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'.'
我找到了以下属性声明.
[param: MarshalAs(UnmanagedType.LPTStr)]
Run Code Online (Sandbox Code Playgroud)
什么param关键字在这个上下文中意味着什么,我们为什么要使用它?
在我的数据访问层中,我使用以下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”
我该如何解决这个问题?
c# ×3
.net-core ×2
asp.net-core ×2
.net ×1
android ×1
asp.net-mvc ×1
events ×1
f# ×1
generics ×1
genymotion ×1
lambda ×1
linq ×1
marshalling ×1
oauth-2.0 ×1
openiddict ×1
types ×1
where ×1
xamarin ×1