我创建了一个跨平台库,它有3个特定于平台的实现:
我和Nuget一起打包了这个库,就像跨平台库项目一样.
现在,当我创建一个新的Xamarin Forms项目并选择.NET Standard作为共享代码的方法时,我引用我的nuget并尝试在android模拟器中运行它,我得到:
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2): Error: Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'SDK.NetStandard, Version=1.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'SDK.NetStandard.dll'
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference reference, Mono.Cecil.ReaderParameters parameters) [0x0009a] in /Users/builder/data/lanes/5945/342b2ce9/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:229
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference reference) [0x00000] in /Users/builder/data/lanes/5945/342b2ce9/source/monodroid/external/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:179
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver resolver, System.Collections.Generic.ICollection`1[T] assemblies, Mono.Cecil.AssemblyDefinition assembly, System.Boolean topLevel) [0x0014a] in <fdfe8f54615a4e2ab24c72dc90da5c64>:0
at Xamarin.Android.Tasks.ResolveAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver resolver) [0x00237] in <fdfe8f54615a4e2ab24c72dc90da5c64>:0 (blank.Android)
Run Code Online (Sandbox Code Playgroud)
我已经仔细检查过,nuget包中存在SDK.NetStandard.dll.
我已经通过创建一个带有.NET Core 2的简单控制台应用程序以及那里的库工作属性来测试它.
[编辑] …
我们正在开发一个基于 keycloak(5.0.0) 的解决方案,我们的客户可以在其中创建他们的帐户并管理他们自己的用户 - 并且只有他们的用户。
最初认为我们可以为此使用领域。每个客户都有自己的领域。经过初步测试,我们认为这可能不是一个好的解决方案,因为在创建约 500 个领域后,应用程序变得无响应(https://issues.jboss.org/browse/KEYCLOAK-4593)。
我们决定尝试使用 Groups 来模拟租户。我们的目标是在外部过程(keycloak REST API)中创建一个具有管理员用户的组。目前找不到如何限制此管理员只能管理他们自己的组(创建子组、管理用户并赋予他们角色)的方法。
我注意到有几封电子邮件提到了这些功能,但我找不到实际的例子来完成这项工作。
第二个链接准确显示了我们想要实现的目标。
我可以看到的当前替代方案是实现一个外观(客户端或单独的 Web 应用程序),它会限制对其他组的可见性和访问权限。
还有其他选择吗?
我是 Keycloak(6.0.1) 的几个自定义 SPI,我还需要创建一个将发送给用户的自定义操作令牌。
我创建了一个自定义事件侦听器、电子邮件发件人、所需操作并将所有这些部署在一个 jar 中。
当我尝试使用正确的清单条目放置操作令牌处理程序时,我得到了这个
Caused by: java.lang.NoClassDefFoundError: Failed to link com/mycompany/providers/registration/actiontoken/Invitati
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
at org.jboss.modules.Module.loadModuleClass(Module.java:731)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1209)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220)
at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
at org.keycloak.keycloak-services@6.0.1//org.keycloak.provider.DefaultProviderLoader.load(DefaultProviderLoader.java:60)
Run Code Online (Sandbox Code Playgroud)
处理程序的定义
package com.mycompany.providers.registration.actiontoken;
import org.keycloak.TokenVerifier;
import
org.keycloak.authentication.actiontoken.AbstractActionTokenHander;
import org.keycloak.authentication.actiontoken.ActionTokenContext;
import org.keycloak.authentication.actiontoken.TokenUtils;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.sessions.AuthenticationSessionModel; …
Run Code Online (Sandbox Code Playgroud) 想与Withings API连接.我在另一个项目中使用了相同的Controller,他在那里工作得很好.在该站点是Azure webrole的项目中(不知道这是怎么回事),它只是不起作用.首先,我得到了
'DotNetOpenAuth.Reporting'的类型初始化程序引发了异常.
所以我在web.config中关闭了它
报告已启用="false"
现在我知道了
'DotNetOpenAuth.Logger'的类型初始化程序引发了异常.
我不使用log4net.
public ActionResult StartOAuth()
{
var serviceProvider = GetServiceDescription();
var consumer = new WebConsumer(serviceProvider, _tokenManager);
// Url to redirect to
var authUrl = new Uri(Request.Url.Scheme + "://" + Request.Url.Authority + "/Withings/OAuthCallBack");
// request access
consumer.Channel.Send(consumer.PrepareRequestUserAuthorization(authUrl, null, null));
// This will not get hit!
return null;
}
private ServiceProviderDescription GetServiceDescription()
{
return new ServiceProviderDescription
{
AccessTokenEndpoint = new MessageReceivingEndpoint("https://oauth.withings.com/account/access_token", HttpDeliveryMethods.PostRequest),
RequestTokenEndpoint = new MessageReceivingEndpoint("https://oauth.withings.com/account/request_token", HttpDeliveryMethods.PostRequest),
UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://oauth.withings.com/account/authorize", HttpDeliveryMethods.PostRequest),
TamperProtectionElements = new …
Run Code Online (Sandbox Code Playgroud)