Windows服务serviceCredentials无效的十六进制字符串格式

Vya*_*lav 6 c# windows-services

我正在调试Win服务.我在服务器上添加了一些证书.试图通过序列号查找证书. https://gyazo.com/9cdcda75e98fe7b7c35496976a5aaaeb

这一行为.config:

  <serviceCredentials>
    <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="DDBS.DDBSPasswordValidator, DDBS" />
    <serviceCertificate findValue="?1C5411F9D38252824C2EC1CC7E5EBE3F" x509FindType="FindBySerialNumber" storeLocation="LocalMachine" storeName="My" />
  </serviceCredentials>
Run Code Online (Sandbox Code Playgroud)

我收到错误:服务无法启动.System.FormatException:无效的十六进制字符串格式.

ric*_*aux 18

来自JanAngelovič的MSDN论坛:

如果从公共证书对话框中剪切并粘贴[序列号或指纹],它将以UNICODE(UTF-16LE)编码复制,并在开头使用特殊的不可见控制字符(0xFF和0xFE,也称为"字节顺序标记").串.

就个人而言,我用指纹看到了这一点; 从对话框剪切并粘贴到Visual Studio中,保留了2个未显示的字符(可以通过光标"逐步"并删除).

  • Notepad++ 编码对我不起作用...但我将光标移动到字符串的左侧,并一直按删除键,直到隐藏的字符被删除(在 Visual Studio 中有效)。 (2认同)

小智 5

删除所有findValue="XXXXXXX"然后再写一遍.. 有时无效字符在 findValue="??? <--- 这里


Vya*_*lav -4

使用 FindBySubjectName 选项进行查找。服务很好。

  • 这不是您问题的答案。@richaux 的答案应该是公认的答案。 (6认同)