2010-10-20 42 views
0

如何將當前日期&時間用作ServiceCertificate配置中findValue屬性的值(對於x509FindType使用「FindByTimeValid」)?如下使用DateTime.Now顯然不起作用,但「2010-10-20 14:35:28Z」也沒有。我在服務器上有兩個證書,其中一個已經過期,因此我使用這個查找類型值。如何在WCF中使用當前日期時間作爲FindByTimeValid值ServiceCertificate config

例如:

<serviceCredentials> 
     <serviceCertificate findValue="DateTime.Now" x509FindType="FindByTimeValid" storeLocation="LocalMachine" storeName="My"/> 
</serviceCredentials> 

編輯:我解決了這個問題通過刪除過期的證書,但我仍然好奇,如果這是可能的。

感謝

基思

回答

0

由於沒有人似乎在這個問題稍微有興趣(一個月2次,我認爲其中至少有一個是我自己),我決定打破了反射和有看看過程並找到以下內容。

在System.ServiceModel裝配,我們有以下的代碼

case X509FindType.FindByTimeValid: 
if (findValue.GetType() != typeof(DateTime)) 
{ 
    throw new CryptographicException(SR.GetString("Cryptography_X509_InvalidFindValue")); 
} 

你可以從findValue進來作爲一個對象,我認爲是反過來裝在配置簽名看到的X509Certificate2Collection.FindCertInStore(SafeCertStoreHandle safeSourceStoreHandle, X509FindType findType, object findValue, bool validOnly)方法解析器作爲一個字符串,這意味着這將永遠不會工作。

所以,答案是你不能通過xml配置來做到這一點,但如果你以編程方式做到這一點,你可以做到這一點。

相關問題