この記事は、使用停止のエンドポイントが原因で Windows Server Update Services (WSUS) の同期が失敗する問題を解決するのに役立ちます。
元の製品バージョン: WSUS - すべてのバージョン、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012
元の KB 番号: 4482416
現象
WSUS 同期が失敗し、次のエラー メッセージが表示されます。
SoapException: エラーが発生しました
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] パラメーター)
at Microsoft.UpdateServices.ServerSyncWebServices.ServerSync.ServerSyncProxy.GetUpdateData(Cookie cookie, UpdateIdentity[] updateIds)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.WebserviceGetUpdateData(UpdateIdentity[] updateIds, List'1 allMetadata, List'1 allFileUrls, Boolean isForConfig)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.GetUpdateDataInChunksAndImport(List'1 neededUpdates, List'1 allMetadata, List'1 allFileUrls, Boolean isConfigData)
at Microsoft.UpdateServices.ServerSync.Cat
さらに、次のようなエラー メッセージが WSUS サーバーの WSUS ログ ファイル (%ProgramFiles%\Update Services\LogFiles\SoftwareDistribution.log
) に記録されます。
<Date> <Time> Error WsusService.25 SoapUtilities.LogException USS ThrowException: Actor = https://fe2.update.microsoft.com/v6/ServerSyncWebService/ServerSyncWebService.asmx, Method = "http://www.microsoft.com/SoftwareDistribution/GetUpdateData", ID=<ID>, ErrorCode=InternalServerError, Message=
at Microsoft.UpdateServices.Internal.SoapUtilities.LogException(SoapException e)
at Microsoft.UpdateServices.Internal.WebServiceCommunicationHelper. ProcessWebServiceProxyException(SoapHttpClientProtocol& webServiceObject, Exception exceptionInfo)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.WebserviceGetUpdateData(UpdateIdentity[] updateIds, List\1 allMetadata, List\1 allFileUrls, List\`1& updatesWithSecureFileData, Boolean isForConfig)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.GetUpdateDataInChunksAndImport(List\1 neededUpdates, List\1 allMetadata, List\1 allFileUrls, Boolean isConfigData)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.GetAndSaveUpdateMetadata(List\1 updates)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.ExecuteSyncProtocol(Boolean allowRedirect)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.CatalogSyncThreadProcess()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
<Date> <Time> Error WsusService.25 SoapUtilities.LogException USS ThrowException: Actor = https://fe2.update.microsoft.com/v6/ServerSyncWebService/ServerSyncWebService.asmx, Method = "http://www.microsoft.com/SoftwareDistribution/GetUpdateData", ID=\<ID>, ErrorCode=InternalServerError, Message=
at Microsoft.UpdateServices.Internal.SoapUtilities.LogException(SoapException e)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.ExecuteSyncProtocol(Boolean allowRedirect)
at Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.CatalogSyncThreadProcess()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
原因
この問題は、WSUS サーバーが古い同期エンドポイント ( https://fe2.update.microsoft.com/v6
) を使用するように構成されている場合に発生します。 このエンドポイントは完全に使用停止となり、2019 年 7 月 8 日以降は到達できなくなります。
解決方法
この問題を解決するには、WSUS 構成の同期エンドポイントを https://sws.update.microsoft.com
に変更します。
これを行うには、WSUS 階層内のルート WSUS サーバーなど、Microsoft Update に直接接続する一番上の WSUS サーバーで次の手順に従います。
すべての WSUS コンソールを閉じます。
管理者特権の PowerShell コマンド プロンプトで、次の PowerShell スクリプトを実行します。
注意
最上位のサーバーではない WSUS サーバーでスクリプトを実行しないでください。 サーバーがインターネットに接続されていない場合、同期が失敗する可能性があります。
WSUS バージョン 3.x の場合:
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$server = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer()
$config = $server.GetConfiguration()
# Check current settings before you change them
$config.MUUrl
$config.RedirectorChangeNumber
# Update the settings if MUUrl is https://fe2.update.microsoft.com/v6
$config.MUUrl = "https://sws.update.microsoft.com"
$config.RedirectorChangeNumber = 4002
$config.Save();
iisreset
Restart-Service *Wsus* -v
Windows Server 2008 (最新の更新プログラムなし) 以前のバージョンを実行している WSUS サーバーは、 https://update.microsoft.com/v6
または https://www.update.microsoft.com
同期エンドポイントを使用している可能性があります。 これらのバージョンの Windows では SHA256 証明書認証がサポートされていないため、PowerShell スクリプトで次の設定を使用します。
$config.MUUrl = " https://sws1.update.microsoft.com"
$config.RedirectorChangeNumber = 3011
Windows Server 2012 以降のバージョンの WSUS の場合:
$server = Get-WsusServer
$config = $server.GetConfiguration()
# Check current settings before you change them
$config.MUUrl
$config.RedirectorChangeNumber
# Update the settings if MUUrl is https://fe2.update.microsoft.com/v6
$config.MUUrl = "https://sws.update.microsoft.com"
$config.RedirectorChangeNumber = 4002
$config.Save()
iisreset
Restart-Service *Wsus* -v
WSUS 同期が成功したことを確認します。
PowerShell スクリプトを実行する方法の詳細については、「powerShell とは」を参照してください。