1.1. サポートされているアーキテクチャ
1.3. ハードウェア要件
Windows XP、Windows Server 2003、または Windows 2000 が実行されているコンピュータで、.NET Framework 2.0 または 2.0 SP1 がインストールされている場合、.NET Framework 2.0 SP2 のインストールが失敗することがあります。
.NET Framework 2.0 SP2 セットアップにより、もしくは .NET Framework 3.5 SP1
セットアップによって呼び出された .NET Framework 2.0 SP2 セットアップにより、.NET Framework 2.0 および .NET Framework 2.0 SP1 の以前のバージョンがアンインストールされます。 Windows インストーラによって以前のバージョンがアンインストールされる場合は、キャッシュされたインストール データベースが使用されます。Windows インストーラによるアンインストール操作中に、以前にインストールされた更新プログラムのインストール パッケージがキャッシュまたは元のソースの場所に見つからなかった場合、インストールが失敗します。不完全なロールバックが発生した場合、このインストールの失敗の影響により、.NET Framework を使用するアプリケーションが失敗する可能性もあります。
この問題は、次のいずれかの理由で発生する可能性があります。
Windows インストーラ キャッシュで必要なファイルが見つかりません。
Windows インストーラ キャッシュが変更されています。キャッシュは、製品の修復、更新、およびアンインストールに不可欠です。したがって、キャッシュの内容を削除または変更しないでください。キャッシュの内容を変更すると、Windows インストーラ ベース製品を更新または修復しようとしたときにソースを要求される場合があります。この問題を解決するには
.NET Framework 2.0 SP2 のインストールが失敗し、"原因" セクションに記述されているように "修正プログラムのソースを解決しています。" というメッセージがインストール ログ ファイルに表示された場合は、Microsoft .NET Framework Registration Correction Tool を使用して問題を解決できます。
Windows XP または Windows Server 2003 から Windows Vista (RTM) にアップグレードすると、.NET Framework 3.5 の一部のコンポーネントがコンピュータ上に存在しなくなります。
この問題を解決するには
1. コントロール パネルを開き、[プログラムと機能] をクリックします。
2. .NET Framework 3.5 をアンインストールします。
3. Visual Studio 2008 DVD または http://go.microsoft.com/fwlink/?LinkID=96339 から .NET Framework 3.5 を再インストールします。
Windows Vista および Windows 2008 Server で .NET Framework 3.5 SP1 セットアップが失敗し、1058 エラー コードが表示されます。
この問題を解決するには
.NET Framework 3.5 SP1 を Windows Vista または Windows 2008 Server にインストールする前に、Windows Update サービスが有効になっていることを確認します。
.Windows 2008 Server では、オペレーティング システムにインストールされている Language Pack が一致しない場合、NET Framework 3.5 SP1 Language Pack をインストールできません。
この問題を解決するには
.NET Framework 3.5 SP1 をインストールする前に、一致する Language Pack をオペレーティング システムにインストールします。 オペレーティング システムの Language Pack は、http://www.microsoft.com/Downloads/details.aspx?FamilyID=e9f6f200-cfaf-4516-8e96-e4d4750397ff&displaylang=ja からダウンロードできます。
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod>
<ds:Reference URI="#Timestamp">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>...</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#To">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>...</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>...</ds:SignatureValue>
<ds:KeyInfo>...</ds:KeyInfo>
</ds:Signature>
...次の例外がスローされます。
"System.Security.Cryptography.CryptographicException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
at System.IdentityModel.StandardSignedInfo.EnsureAllReferencesVerified()
at System.IdentityModel.SignedXml.CompleteSignatureVerification()
at System.ServiceModel.Security.WSSecurityOneDotZeroReceiveSecurityHeader.VerifySignature(SignedXml signedXml, Boolean isPrimarySignature, SecurityHeaderTokenResolver resolver, Object signatureTarget, String id)
at System.ServiceModel.Security.ReceiveSecurityHeader.ProcessSupportingSignature(SignedXml signedXml, Boolean isFromDecryptedSource)
at System.ServiceModel.Security.ReceiveSecurityHeader.ExecuteFullPass(XmlDictionaryReader reader)
at System.ServiceModel.Security.StrictModeSecurityHeaderElementInferenceEngine.ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader)
at System.ServiceModel.Security.ReceiveSecurityHeader.Process(TimeSpan timeout)
at System.ServiceModel.Security.AcceptorSessionSymmetricTransportSecurityProtocol.VerifyIncomingMessageCore(Message& message, TimeSpan timeout)
at System.ServiceModel.Security.TransportSecurityProtocol.VerifyIncomingMessage(Message& message, TimeSpan timeout)"
アセンブリ キャッシュ ビューア (Shfusion.dll) は Windows のシェル拡張機能であり、この機能により、Windows エクスプローラでグローバル アセンブリ キャッシュの内容を表示および操作できます。Shfusion.dll は、%windir%\Microsoft.NET\Framework\v2.0.50727 ディレクトリにあります。
Windows Vista では、昇格されたアクセス許可を使用した場合、アセンブリ キャッシュ ビューアは動作しません。昇格されたアクセス許可を持つユーザーがコマンド プロンプト ウィンドウから起動する場合も同様です (たとえば、グローバル アセンブリ キャッシュのパスで START コマンドを使用した場合)。これは、アセンブリ キャッシュ ビューアは Windows エクスプローラのシェル拡張機能であり、昇格されたアクセス許可では動作しないためです。
この問題を解決するには
Shfusion.dll は表示のみに使用します。
更新の場合は、管理者特権を持つコマンド プロンプト ウィンドウを開き、.NET Framework SDK の Gacutil.exe コマンド ライン ツールを使用します。
<system.serviceModel>
<client>
<endpoint>
<identity>
<userPrincipalName value="user@domain" />
</identity>
</endpoint>
</client>
</system.serviceModel>
さらに、SslStreamSecurityBindingElement でスタックに SspiNegotiatedOverTransport が指定された NetTcpBinding または CustomBindings を使用するクライアントは、サービスの証明書の CN チェックを実行するために、コードにカスタム IdentityVerifier を指定する必要があります。次のコード スニペットはこの方法を示すもので、IdentityVerifier の実装の開始点になります。
NetTcpBinding tcpBinding = new NetTcpBinding(SecurityMode.TransportWithMessageCredential);
CustomBinding customBinding = new CustomBinding(tcpBinding.CreateBindingElements());
SslStreamSecurityBindingElement ssl = customBinding.Elements.Find<SslStreamSecurityBindingElement>();
ssl.IdentityVerifier = new DnsIdentityVerifier(new DnsEndpointIdentity("DNS.name.of.service.certificate"));
public class DnsIdentityVerifier : IdentityVerifier
{
DnsEndpointIdentity _expectedIdentity;
public DnsIdentityVerifier(DnsEndpointIdentity expectedIdentity)
{
_expectedIdentity = expectedIdentity;
}
public override bool CheckAccess(EndpointIdentity identity, AuthorizationContext authContext)
{
List<Claim> dnsClaims = new List<Claim>();
foreach (ClaimSet claimSet in authContext.ClaimSets)
{
foreach (Claim claim in claimSet)
{
if (ClaimTypes.Dns == claim.ClaimType)
{
dnsClaims.Add(claim);
}
}
}
if (1 != dnsClaims.Count)
{
throw new InvalidOperationException(String.Format("Found {0} DNS claims in authorization context.", dnsClaims.Count));
}
return String.Equals((string)_expectedIdentity.IdentityClaim.Resource, (string)dnsClaims[0].Resource, StringComparison.OrdinalIgnoreCase);
}
public override bool TryGetIdentity(EndpointAddress reference, out EndpointIdentity identity)
{
identity = _expectedIdentity;
return true;
}
}
この問題を解決するには
この問題の詳細については、こちらを参照してください。