Fix it now
Self-update does not follow WSUS onto its custom port. Microsoft’s requirement is explicit: WSUS Setup creates a virtual directory named Selfupdate under the web site running on port 80, and you must have a web site running on port 80 even when the WSUS site is on a custom port.
cscript "C:\program files\microsoft windows server update services\setup\InstallSelfupdateOnPort80.vbs"
iisreset
- In IIS Manager, confirm a site is bound to port 80 and that it contains a Selfupdate virtual directory. If the default web site was removed or repurposed, that is the fault.
- Test from a client over HTTP on port 80 rather than the WSUS port: requesting the iuident.cab path from the server should return a file rather than a 404.
- Run the InstallSelfupdateOnPort80 script above, which is Microsoft’s documented way to put the self-update tree back.
- Confirm anonymous access on the Default Web Site, the ClientWebService and the Selfupdate virtual directories, which is what clients need before they have authenticated anywhere.
- Check the IIS logs under
%windir%\system32\LogFiles\W3SVC1to confirm the requests are arriving and what they are answered with.
If the 12000-series web service events are present too, and a browser gets 503, this is not a self-update problem: the application pool is down and taking everything with it. Fix that first.
If self-update requests are answered and clients are reporting again, you can stop here. The next section explains what the self-update tree is for and what breaks it.
Why it happens
Before a client can talk to WSUS properly it needs a compatible Windows Update agent, and self-update is the mechanism that lets it fetch one. Because the client is bootstrapping, that request does not go to the port the WSUS administration site listens on. Microsoft’s wording is direct: Setup creates a virtual directory named Selfupdate under the web site running on port 80, that directory holds the latest WSUS client, and for that reason you must have a web site running on port 80 even if the WSUS web site is on a custom port. The site on port 80 does not have to be dedicated to WSUS – it only has to exist.
The paths involved are fixed. Clients fetch an identification file from the root of the server and their agent from beneath the Selfupdate directory, organised by architecture, operating system and language. That is why the failure is so binary: either a site answers on port 80 with those paths present, or nothing about the client’s agent update can work regardless of how healthy WSUS itself is.
The event IDs in this family have no published message text, so they are best treated as pointers to the IIS configuration rather than as diagnoses. What is documented, and what actually settles this, is whether a site exists on port 80, whether the Selfupdate directory is under it, whether anonymous access is permitted, and what the IIS log records when a client asks.
Nothing is serving port 80 any more
You have this one if Self-update fails while the console and the other WSUS services are healthy.
- In IIS Manager, confirm a site is bound to port 80 on this server.
- If the default web site was removed or its binding changed, restore a site on port 80.
- Run
cscript "<drive>:\program files\microsoft windows server update services\setup\InstallSelfupdateOnPort80.vbs"to put the self-update tree back under it. - Test from a client over HTTP on port 80 and confirm you do not get a 404.
This is the case that catches people who install WSUS on its own port and later deploy a web application that takes over port 80.
Another application on port 80 is intercepting the requests
You have this one if An access denied when the agent tries to update itself, and the latest agent never runs.
- Grant anonymous access to the Default Web Site, the ClientWebService and the Selfupdate virtual directories.
- Exclude the WSUS paths from the other application’s request handling – Microsoft names /iuident.cab, /wutrack.bin, /clientwebservice and /Selfupdate.
- Reset the web services with
iisresetand retest from a client. - Where the two applications genuinely cannot share the server, move one of them.
The application pool is down and everything is failing together
You have this one if These events plus the 12000-series web service events, and a browser request returning 503.
- Start WsusPool in IIS Manager and confirm it stays started.
- Address the reason it stopped – normally its private memory limit or the size of the database – rather than the virtual directories.
- Reset the web services with
iisreset. - Retest self-update only once the pool is stable.
Clients are pointed at the wrong server or port
You have this one if The server passes every test you run, but one group of machines never updates its agent.
- On an affected client, check the Windows Update policy values for the update server and the status server.
- Confirm they include the correct port for your installation and that both name the same server.
- Correct the Group Policy that sets them rather than the client, then run
gpupdate /force. - Force a detection cycle and confirm the client’s last-contact time moves in the console.
Full reference
What lives where
| Component | Where it must be |
|---|---|
| Selfupdate | A virtual directory under the web site running on port 80, holding the latest WSUS client |
| The client identification file | At the root of the server over HTTP: /iuident.cab |
| The agent files | Beneath /selfupdate, organised by architecture, operating system and language |
| Client tracking | /wutrack.bin |
| The client web service | /clientwebservice, which also needs anonymous access |
| All of it | Served by IIS on the WSUS server, inside the WsusPool application pool |
Testing it the way a client does
- From another machine, request the identification file over HTTP on port 80 of the WSUS server.
- A file means the self-update tree is present. A 404 means the directory or the site is missing.
- A 503 means the application pool is stopped, which is a different article’s problem.
- An authentication prompt or a 401 means anonymous access has been removed from a directory that needs it.
- Check
%windir%\system32\LogFiles\W3SVC1for the request you just made and read the status code IIS recorded.
That sequence is worth following in order, because each outcome sends you somewhere different and three of the four have nothing to do with self-update itself.
What the repair script does
InstallSelfupdateOnPort80.vbs lives in the setup folder of the Update Services installation directory and is Microsoft’s documented way to ensure the self-update tree is working. It is a much narrower action than re-running the whole WSUS post-installation configuration, which rewrites the IIS configuration for WSUS generally. Prefer the script where the problem is the self-update tree, and keep the post-installation step for cases where more of the IIS configuration is damaged – and note your current virtual directory paths, bindings and content location before running that, so you can confirm afterwards that nothing you depended on changed.
Anonymous access, and why hardening breaks this
Clients contact the self-update tree and the client web service before they have authenticated anywhere, which is why anonymous access on those directories is part of the documented configuration rather than an oversight. A hardening baseline applied at the site level and inherited downwards will remove it, and the symptom is a set of clients that stop updating with a healthy-looking server. Check inheritance as well as the directory’s own settings, because a setting applied at the parent looks correct everywhere except where it matters.
When the server is healthy and the clients are not
- Read last-contact times in the console rather than the computer list. The console shows the last state the server recorded, so a client that stopped talking looks fine until you check the timestamp.
- Confirm the update server and status server policy values agree with each other and with the port WSUS is on.
- Confirm the clients can reach the WSUS port as well as port 80; self-update and the client web service are different endpoints.
- Where only newly built machines fail, compare their policy against a working machine rather than against the documentation.
How much self-update still matters
Current Windows versions carry an update agent serviced through normal updates, so self-update matters far less than it once did. It is still worth fixing, because a broken Selfupdate directory usually means the IIS configuration for WSUS has been damaged more broadly – a site removed, a path orphaned by a move, or a baseline that removed anonymous access across the whole server. The self-update failure is the visible edge of that, and the rest of it will surface later.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
Event ID 13042 |
Logged by WSUS in connection with the self-update mechanism. Microsoft publishes no message text for this ID; confirm a site exists on port 80 with a Selfupdate virtual directory under it | not published by the vendor |
Event ID 12042 |
Logged by WSUS against one of its authentication web services. No published message text; check the virtual directory exists with a valid physical path and permits anonymous access | not published by the vendor |
Event ID 12052 |
The same family, with no published message text. Read it with the other WSUS events from the same minute rather than on its own | not published by the vendor |
Event ID 507 |
A WSUS server-side event with no published message text. Use the event body and the IIS logs to identify which component reported it | not published by the vendor |
Confirm the fix worked
- A site is bound to port 80 on the WSUS server and contains a Selfupdate virtual directory.
- Requesting the identification file over HTTP on port 80 from another machine returns a file, not a 404, 401 or 503.
- The IIS log under
%windir%\system32\LogFiles\W3SVC1records those requests with a success status. - A test client’s last-contact time updates in the console after a forced detection cycle.
- The WSUS console itself still connects, confirming you have not broken the administration site while fixing port 80.
Questions people ask about this
Can I put WSUS on port 80 to simplify this?
On a dedicated WSUS server that removes a whole category of confusion. On a server sharing IIS with anything else, keeping WSUS on its own port is safer, and you simply have to keep a site on port 80 for the self-update tree.
Does fixing this cost anything?
No. These are IIS virtual directories belonging to a role included with Windows Server. Everything here is configuration, and no licence, add-on or edition changes it.
Do modern clients still need self-update?
Much less than they did, because current Windows versions service the update agent through normal updates. Fix it anyway: a broken Selfupdate directory is usually a symptom of wider damage to the IIS configuration for WSUS.
Why do clients look fine in the console while this is broken?
Because the console shows the last state the server recorded. A client that cannot reach the server stops updating it, and the list keeps showing stale information until you look at last-contact times.
Is re-running the WSUS post-installation step safe?
It rewrites the IIS configuration for WSUS, so note your current virtual directory paths, bindings and content location first. Where the problem is only the self-update tree, the InstallSelfupdateOnPort80 script is the narrower and safer action.
