C# Windows服务服务凭据十六进制字符串格式无效

C# Windows服务服务凭据十六进制字符串格式无效,c#,windows-services,C#,Windows Services,我正在调试Win服务。我在服务器上添加了一些证书。正在尝试通过其序列号查找证书。 behaviors.config的一部分: <serviceCredentials> <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="DDBS.DDBSPasswordValidator, DDBS" /> <s

我正在调试Win服务。我在服务器上添加了一些证书。正在尝试通过其序列号查找证书。

behaviors.config的一部分:

  <serviceCredentials>
    <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="DDBS.DDBSPasswordValidator, DDBS" />
    <serviceCertificate findValue="‎1C5411F9D38252824C2EC1CC7E5EBE3F" x509FindType="FindBySerialNumber" storeLocation="LocalMachine" storeName="My" />
  </serviceCredentials>


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

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

从Jan Angelovič开始:

如果您剪切并粘贴[序列号或指纹] 从“公共证书”对话框中,它以UNICODE格式复制 (UTF-16LE)使用特殊的不可见控制字符进行编码 (0xFF和0xFE,也称为“字节顺序标记”)位于 绳子


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

删除所有findValue=“XXXXXXX”,然后再次写入。有时无效字符位于findValue之后="??您建议如何解决此问题?我从同一个对话框中获取序列号,但它不起作用。请粘贴到您选择的编辑器中并删除不可见的字符。虽然它们不可见,但您可以使用光标检测它们的存在。我所做的是直接键入序列号,而无需复制和粘贴,并且不会通过gh和exception,但它也找不到:SI在没有注意到的情况下遇到了这个问题。我在Notepad++中打开它,然后将编码更改为ASCII以查看问题…Notepad++编码对我不起作用…但我将光标移到字符串的左侧,并一直按delete键,直到删除隐藏的字符(在Visual Studio中起作用)这不是你问题的答案。@richaux的答案应该是公认的答案。