小编and*_*rsh的帖子

没有 proto 文件的 C# gRPC 服务

我正在寻找一种通过 gRPC 在不同的 C#(仅限)应用程序之间进行通信的方法。有没有办法通过 C# 接口和 POCO 类(由 ProtoMember 等归因)提供服务定义和契约,而不是创建 proto 文件并从中生成代码?我需要它在 .net Framework 4.7.2 上工作,即使用 grpc.core 而不是 grpc.dotnet。

PS:我想要这个的主要想法是避免代码生成部分,这在这里似乎过多。还需要能够为我的 POCO 类指定自定义属性,例如 DisplayAttribute 等。

.net c# grpc

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

在手机上设置身份验证器应用程序时的 QR 码 VS OtpAuth 链接

我们的网站可以从桌面和移动设备打开。当用户在桌面上设置 MFA 时,他们可以使用手机摄像头直接从 PC 屏幕扫描 QR 码。但是,当他们登录移动设备时,他们很难在当前使用的同一设备上扫描二维码。我在帐户设置中检查了 Google 的做法(通过 Android 上的 Chrome 登录):

在此输入图像描述 在此输入图像描述

因此,默认情况下,他们建议扫描二维码,但当我单击“我不能”时,他们建议我自己复制粘贴秘密。

但为了确保他们跟踪用户是从移动设备登录的,为什么他们不只显示 otpauth:// 链接呢?我尝试在我的应用程序中执行此操作,它的工作方式就像一个魅力(至少在 Android 上,现在无法在 iPhone 上检查,但如果您有机会在 iPhone 上测试它,这里有一个示例链接):

otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite

upd:SOF 不会使其可点击 - 一定是出于安全原因,但在我的网站上我可以毫无问题地执行此操作。当选中“请求桌面站点”复选框时,将其包装到 Android 上的 Chrome 中的代码片段中即可:

<a href="otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite">otpauth://totp/test@example.com?secret=wonttellyouthat&algorithm=SHA1&digits=6&period=30&issuer=superwebsite</a>
Run Code Online (Sandbox Code Playgroud)

点击它,Android 会建议我可以使用 Microsoft 或 Google 身份验证器,这意味着 Google 的应用程序支持此技巧。我还安装了 LastPass,但那个并没有弹出。

在此输入图像描述

在我看来,这个解决方案对用户更加友好,并且很好奇为什么谷歌不允许用户这样做?一定有一些我没有考虑到的陷阱吗?

android one-time-password google-authenticator totp multi-factor-authentication

5
推荐指数
0
解决办法
2086
查看次数

HTML 省略号而不指定特定宽度

我正在尝试实现以下布局(请参见下面的屏幕截图)。

  • 如果 SPAN 和 B 都适合该框 - 它们就会依次出现。
  • 如果没有 - SPAN 有省略号,但 B 完全显示(它永远不会大于整个块)。

B 可以包含在 SPAN 中 - 但这对我没有帮助。我还尝试使用表格,甚至是嵌套的表格 - 没有任何帮助。

预期行为:

在此输入图像描述

初始片段:

div {
  width: 200px;
  white-space: nowrap;
  border: 1px solid red;
  margin-top: 10px;
}

span {
  overflow: hidden;
  text-overflow: ellipsis;
}

b {
  padding-left: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <span>test</span>
  <b>12345</b>
</div>

<div>
  <span>test test test test test test test test test test test</span>
  <b>50</b>
</div>
Run Code Online (Sandbox Code Playgroud)

html css html-table ellipsis wkhtmltopdf

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

Resharper - 可能错误调用 GetType()

当我为 Ninject 配置 log4net 时,Resharper 会发出非常奇怪的消息“可能错误调用 GetType()”。知道这意味着什么吗?

kernel.Bind<ILog>().ToMethod(ctx => LogManager.GetLogger(ctx.Request.ParentRequest?.Service.GetType()));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c# resharper log4net ninject

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

从 C# 动态调用非托管代码

一般来说,我需要能够从我在编译时不知道的任何 DLL 中调用任何非托管函数。

我看到的所有文章(例如https://blogs.msdn.microsoft.com/jonathanswift/2006/10/03/dynamically-calling-an-unmanaged-dll-from-net-c/)都建议使用委托,但我在编译时不知道我要调用哪个函数,甚至不知道它需要哪些参数和多少参数。

基本上我有一个用户输入,如:调用“Kernel32.dll”函数“DeleteFile”参数[“C:\testfile.txt”]。

你能建议至少如何谷歌吗?“动态”这个词没有帮助..

任务本身有点疯狂,因为它实际上是一个大学项目。不确定它在现实生活中是否有用..

var dll = "kernel32.dll";
var fun = "DeleteFile";
var args = new object[] { "C:\\dev\\test.txt" };

IntPtr pDll = NativeMethods.LoadLibrary(dll);

IntPtr pFun = NativeMethods.GetProcAddress(pDll, fun);

// How can I call it in a different way, without having a delegate?
Marshal.GetDelegateForFunctionPointer(pFun, typeof(?????));
Run Code Online (Sandbox Code Playgroud)

c# dll pinvoke unmanaged marshalling

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