Server Error in '/owa' Application after Exchange 2016 CU11 Update

After upgrading from Exchange 2016 CU10 to CU11, I can no longer access OWA or ECP and I get the following in my web browser:

I have looked at the following but it didn't apply to me, Exchange 2016 ECP throws Error, Posted on 2018-04-17

Server Error in '/owa' Application

Could not find a part of the path 'c:\program files\microsoft\exchange server\v15\frontend\httpproxy\owa\auth\15.1.1531\themes\resources\logon.css'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'c:\program files\microsoft\exchange server\v15\frontend\httpproxy\owa\auth\15.1.1531\themes\resources\logon.css'.

Source Error:

The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL:

1. Add a "Debug=true" directive at the top of the file that generated the error. Example:

  <%@ Page Language="C#" Debug="true" %>

or:

2) Add the following section to the configuration file of your application:

<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>

Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled in debug mode.

Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario.

Stack Trace:


[DirectoryNotFoundException: Could not find a part of the path 'c:\program files\microsoft\exchange server\v15\frontend\httpproxy\owa\auth\15.1.1531\themes\resources\logon.css'.]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +271
   System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1217
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +144
   System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost) +174
   System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost) +84
   Microsoft.Exchange.Clients.Owa.Core.<>c.<InlineCss>b__48_0(String fullFilePath) +26
   Microsoft.Exchange.Clients.Owa.Core.OwaPage.InlineResource(String fileName, String partialFileLocation, ResourceCreator createResource, Dictionary`2 resourceDictionary) +301
   Microsoft.Exchange.Clients.Owa.Core.OwaPage.InlineCss(String fileName) +194
   Microsoft.Exchange.Clients.Owa.Core.OwaPage.InlineCss(ThemeFileId themeFileId) +56
   ASP.auth_logon_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) +715
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +117
   System.Web.UI.Page.Render(HtmlTextWriter writer) +39
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +79
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8753
Marlon ChungAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Jose Gabriel Ortega CastroEE Solution Guide/Topic Advisor and CEO Faru Bonon ITCommented:
It looks like is missing a file (a CSS file) here's my whole folder
resources.zip

Troubleshoot file by file.
1st add the missing CSS
if required another archive

(this resource is from an exchange 2019, but... they all uses the same CSS file so no problem).
Marlon ChungAuthor Commented:
I have already checked and the file logon.css is already in that directory. I also ran the following script UpdateCas.PS1 and the same issue appears.
Jose Gabriel Ortega CastroEE Solution Guide/Topic Advisor and CEO Faru Bonon ITCommented:
Did you check that the files already exists?
also, running the updatecas.ps1 will fix the issue, (or it should have), did you run it as administrator? (the ps console?)
Marlon ChungAuthor Commented:
Yes, the file exists and I ran the script in admin mode
Marlon ChungAuthor Commented:
With the help of Valentina Perez, we renamed Could not find a part of the path
'c:\program files\microsoft\exchange server\v15\frontend\httpproxy\owa\auth\15.1.1591\themes\resources\logon.css'.
to
'c:\program files\microsoft\exchange server\v15\frontend\httpproxy\owa\auth\15.1.1531\themes\resources\logon.css'.

Restarted IIS and now, ECP and OWA are working.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Exchange

From novice to tech pro — start learning today.