Давайте прорубим некоторый беспорядок здесь. Во-первых, давайте упростим путем принятия hasOwnProperty
, уже существует; это верно для подавляющего большинства текущих используемых браузеров.
hasOwnProperty
возвращает true, если название атрибута, которое передается ему, было добавлено к объекту. Это совершенно независимо от фактического значения, присвоенного ему, который может быть точно undefined
.
Следовательно:
var o = {}
o.x = undefined
var a = o.hasOwnProperty('x') // a is true
var b = o.x === undefined // b is also true
Однако:
var o = {}
var a = o.hasOwnProperty('x') // a is now false
var b = o.x === undefined // b is still true
проблема - то, что происходит, когда объект в цепочке прототипа имеет атрибут со значением неопределенных? hasOwnProperty
будет ложь для него, и !== undefined
- также. Все же, for..in
все еще перечислит его в перечислении.
нижняя строка нет никакого перекрестного браузера пути (так как Internet Проводник не представляет __prototype__
) решить, что определенный идентификатор не был присоединен к объекту или чему-либо в его цепочке прототипа.
Если он управляется третьей стороной, то сертификат сервера будет загружен в хранилище сертификатов Windows и выбран как часть поведения службы
В поведении службы вы можете выбрать сертификат, который он использует на конечной точке
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceCredentials>
<serviceCertificate findValue="CN=myhost.mydomain.org" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
. Элемент используется для подключающегося клиента. Просто обновите ссылку на службу для прокси в клиентском решении, и элемент идентификации должен быть обновлен версией зашифрованного значения общедоступных частей нового сертификата.
Это можно сделать, экспортировав сертификат (через IIS или Certificate Snap In) в файл .cer без закрытого ключа в форме base64, затем открыв его в блокноте, скопировав и вставив его в encodedValue