小编Ste*_*hka的帖子

如何为 MAUI 应用程序创建全局错误处理

有没有办法为 MAUI 应用程序设置全局错误处理程序?当我从 Visual Studio 启动我的应用程序时,它当前运行良好。但是,在所有模拟器上,如果我尝试从 shell 的应用程序图标启动应用程序,它会启动然后退出(在 iOS 上,我会收到故障转储)。我不知道这发生在哪里,所以想尝试捕获全局处理程序。

我查看了 builder.ConfigureMauiHandlers,但它似乎只适用于控件。您不能使用 UnhandledExceptionEventHandler 类型,这是我认为合适的类型。

我还尝试了 AppDomain 处理程序,但它似乎也不起作用:

AppDomain ad = AppDomain.CurrentDomain;
ad.UnhandledException += Ad_UnhandledException;
Run Code Online (Sandbox Code Playgroud)

这可能吗?我只找到了 WCF 的示例,但它们不起作用。

maui

16
推荐指数
2
解决办法
6328
查看次数

使用 ADAL 检测到 multiple_matching_tokens_detected

我有一项使用 Azure 访问令牌的服务,我们使用 ADAL 检索该令牌。我们有数百个客户,但由于某种原因,当我们尝试AuthenticationResult为他们检索一个时,其中有两个偶尔会产生此错误:

multiple_matching_tokens_detected:缓存中包含多个满足要求的令牌。再次调用 AcquireToken 提供更多要求(例如 UserId)。

我不知道为什么数百人中只有这两个人有这个问题,而且在网上真的找不到太多关于它的信息。我们获取令牌的代码如下(简化):

AuthenticationContext authContext = new AuthenticationContext(authority, new MyCustomTokenCache());
ClientCredential credential = new ClientCredential(myClientId, myPassword);
authContext.AcquireTokenSilent(resourceUri, credential, UserIdentifier.AnyUser); 
Run Code Online (Sandbox Code Playgroud)

为什么会发生此错误,解决该错误的“建议”解决方案是什么?我一直倾向于尝试通过获取这样的令牌来修复它,但真的很想知道错误到底是什么:

authContext.AcquireTokenSilent(mr.ResourceUri, credential, new UserIdentifier("usersUPN@foo.com", UserIdentifierType.UniqueId));
Run Code Online (Sandbox Code Playgroud)

c# azure-active-directory adal

7
推荐指数
2
解决办法
4922
查看次数

如何修复 Android 清单中的资源错误

我在使用 MAUI 的 RC1 时遇到问题,导致我从 Android 清单中删除了这部分:

    <application
      ...
      android:icon="@mipmap/appicon" 
      android:roundIcon="@mipmap/appicon_round"
      ...>
    </application>
Run Code Online (Sandbox Code Playgroud)

现在它已经 GA 了,我正在尝试将其添加回来,因为在 Android 中我的应用程序图标没有显示 - 相反,它只是通用的 Android 图标。当我将其添加回我的 Android 清单时,如下所示:

    <application android:allowBackup="true"
      android:supportsRtl="true"
      android:icon="@mipmap/appicon" 
      android:roundIcon="@mipmap/appicon_round">
    </application>
Run Code Online (Sandbox Code Playgroud)

我遇到编译错误,我不知道如何解决。注意:我确实有一个名为“appicon.png”的文件,并且它确实可以作为 iOS 上的应用程序图标正常工作。错误看起来像这样:

APT2260 resource xml/microsoft_maui_essentials_fileprovider_file_paths (aka com.watchlikes.watchlikesapp:xml/microsoft_maui_essentials_fileprovider_file_paths) not found.

APT2260 resource style/Maui.SplashTheme (aka com.watchlikes.watchlikesapp:style/Maui.SplashTheme) not found.

APT2067 failed processing manifest.
Run Code Online (Sandbox Code Playgroud)

如果我从清单文件中取出 android:icon 和 android:roundIcon 属性,它会再次正确编译。知道这个问题是什么,和/或如何解决它吗?

xml android maui

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

将 Visual Studio 升级到 17.4.0 Preview 1.0 后无法连接到 Mac

我已经连接到 MacBook Air 大约三个月了,以便使用 MAUI 进行开发。我刚刚将 Visual Studio 2022 从 17.3.0 Preview 3.0 升级到 17.4.0 Preview 1.0。现在,与 Mac 的连接已损坏 - 与我一直使用的连接相同。

错误消息是“无法验证 Xcode 许可证状态,因为在连接的 Mac 的默认位置上未找到 Xcode。为了构建和运行 iOS 应用程序,必须安装 Xcode 并使其正常工作,因此请检查 Xcode已安装,并且 iOS 设置下指定的路径正确。”

当然,Xcode 已安装,因为它已经工作了一段时间了。我发现较旧的帖子报告了相同的问题,并尝试了他们建议的修复,但无济于事。当我在 VS 设置中的 Xcode 路径中插入一个值时,它不会保存它。我找不到返回到 17.3.0 Preview 3.0 的方法,所以现在它已损坏,有人知道如何修复它吗?

更新

当我继续研究这个问题时,我发现了这一点。首先,如果我关闭 VS 并重新打开(无需打开我的项目)并进入“工具”...“选项”...Xamarin...iOS 设置,我可以 a) 在 Xcode 路径属性中放置一个路径,然后 b) 单击点击“与 Mac 配对”按钮并成功连接(或者它是这样说的)。所以设置看起来像这样:

在此输入图像描述

连接后,它显示我已与 Mac 配对,如下所示:

在此输入图像描述

请注意,如果我在启动 VS 时打开我的项目,它会自动尝试连接到 Mac,但会失败并出现上述错误。但在本例中,它显示它已连接到我的 Mac。因此,我打开我的项目,然后在“调试器”菜单上从 iOS 模拟器中选择一个模拟器。但它并没有显示 Mac 上 Xcode 提供的所有模拟器,而是只显示“模拟器”,如下所示:

在此输入图像描述

现在,如果我尝试开始调试应用程序,它会搅动几秒钟,然后停止并显示一条消息,显示“需要与 Mac 建立有效连接才能启动应用程序。请确保已建立连接并重试” ”。然后它显示我不再与我的 Mac 连接,如下所示:

在此输入图像描述

如果我选择我的 …

maui visual-studio-2022

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

Azure B2C问题和问题

我已经使用Azure B2C几天了,并且有一些问题和疑问:

  1. 它创建的用于重定向登录的网址格式不正确.它包含两次问号 - 在网址之后,再次在个人资料名称之后.每次登录,注销等时都会导致404找不到错误.例如,它尝试重定向到登录的URL如下所示:https: //login.microsoftonline.com/samlmanbc.onmicrosoft.com/oauth2 /v2.0/authorize?p=b2c_1_firstdemoprofile?client_id=08fcblahblah.您会注意到配置文件名称后面的第二个问号,这就是打破它的原因.

  2. 如果我修复此问题并尝试登录,则无法识别我的帐户的用户名/密码是全局管理员.它会识别我在目录中本地创建的新用户的用户名/密码.

  3. 在OnRedirectToIdentityProvider方法中,当请求类型是身份验证时,AuthenticationResponseChallenge为null,这使得此调用失败:OpenIdConnectConfiguration config = await mgr.GetConfigurationByPolicyAsync(CancellationToken.None,notification.OwinContext.Authentication.AuthenticationResponseChallenge.Properties.Dictionary [Startup.PolicyKey ]);

我通过使用静态字符串SignInPolicyId为第二个参数解决了这个问题.当帐户已存在时,该工作正常,但如果不存在,则Azure在登录时失败,并表示用户不存在帐户.那么在那里使用什么是正确的值,和/或如何初始化它以使它不为空?

  1. 添加到配置文件的声明类型前面带有"extension_"; 是永远是真的还是现在?例如,我添加了一个名为"favoriteTeam"的属性,但它的声明类型是"extension_favoriteTeam".

  2. 当您使用FaceBook作为身份提供者时,有没有办法传递Facebook访问令牌声明(http://www.facebook.com/claims/AccessToken)?这在将ACS与Facebook一起使用时非常有用,因为您的应用可以使用该令牌对Facebook进行额外调用以从中获取数据.

azure-active-directory

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

MAUI 项目中的预处理器指令在哪里设置

我有一个在 Windows 机器上为 iOS 和 Android 设备构建的 MAUI 项目。那里一切正常。

当我尝试在 Visual Studio for Mac 上运行相同的代码时,它会失败,因为它找不到预处理器指令中定义的 iOS 设备代码,如下所示:

#if ANDROID
//do some Android stuff
#elif IOS
//define some properties
#endif
Run Code Online (Sandbox Code Playgroud)

它不会编译和运行,因为它说找不到“IOS”块中定义的属性。它将“ANDROID”预处理器指令块中的代码显示为活动状态。在 Windows 上,它会根据您选择的调试器输出(例如 Android 模拟器或设备、iOS 模拟器或设备)自动选择要使用的正确指令。它不会在 Mac 上执行此操作,那么有什么方法可以在 Mac 的 VS 2022 17.3 中强制执行此操作吗?

visual-studio maui

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

您可以通过文本完成事件最小化 Android 上的软键盘吗

我在旧版本中看到了这个问题的各种答案,但不确定如何转换为 MAUI。问题是,是否有一种方法可以通过 Entry 控件的 Text Completed 事件最小化设备上的软键盘?

maui

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