Lync 2013 PowerPoint Sharing: Some presenting features are unavailable due to server connectivity issues

Symptoms

Lync Client 

Users hosted on a Lync 2013 server and using Lync 2013 client are unable to add and present a PowerPoint presentation.  They get the following error in Lync: “Some presenting features are unavailable due to server connectivity issues”

WAC-Server

In the WAC server Application event log you see the following event popping up:

Log Name:      Application
Source:        ASP.NET 4.0.30319.0
Date:          17/01/2013 15:31:51
Event ID:      1310
Task Category: Web Event
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      server.domain.tld
Description:
Event code: 3008 
Event message: A configuration error has occurred. 
Event time: 17/01/2013 15:31:51 
Event time (UTC): 17/01/2013 14:31:51 
Event ID: 398a6469b56349ebae01d8aa9cc019d1 
Event sequence: 1 
Event occurrence: 1 
Event detail code: 0 
 
Application information: 
    Application domain: /LM/W3SVC/2/ROOT/m-1-130029067086927262 
    Trust level: Full 
    Application Virtual Path: /m 
    Application Path: C:\Program Files\Microsoft Office Web Apps\BroadcastServices_Host\ 
    Machine name: server 
 
Process information: 
    Process ID: 2004 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\NETWORK SERVICE 
 
Exception information: 
    Exception type: ConfigurationErrorsException 
    Exception message: Could not load file or assembly ‘Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified. (C:\Program Files\Microsoft Office Web Apps\BroadcastServices_Host\web.config line 44)
   at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
   at System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()
   at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath)
   at System.Web.Compilation.BuildManager.ExecutePreAppStart()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Could not load file or assembly ‘Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified.
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
   at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)

 
 
Request information: 
    Request URL: https://wac.domain.tld:443/m/Presenter.aspx?a=0&e=true&WopiSrc=https://lyncfe.domain.tld/DataCollabWeb/wopi/files/1B-1-1DA545D&access_token=AAMFEMcXMba5uZVbva7TUp_-FpUGEMDL0-g4MKvhBFnFdDwj3oGBEMcXMba5uZVbva7TUp_-FpWCAuHYgyDo5MzCtEE9dxeIRDCiiZ3xBoHMQc25gcSH8JPJC5be-oYInVzkjRnDzwgIDURhdGFDb2xsYWJXZWI&fs=false&rec=false&thm=1&ui=en-US&rs=en-US& 
    Request path: /m/Presenter.aspx 
    User host address: A.B.C.D 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
 
Thread information: 
    Thread ID: 7 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace:    at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
   at System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()
   at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath)
   at System.Web.Compilation.BuildManager.ExecutePreAppStart()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
 
 
Custom event details: 

Event Xml:
<Event xmlns=”http://schemas.microsoft.com/win/2004/08/events/event”&gt;
  <System>
    <Provider Name=”ASP.NET 4.0.30319.0″ />
    <EventID Qualifiers=”32768″>1310</EventID>
    <Level>3</Level>
    <Task>3</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime=”2013-01-17T14:31:51.000000000Z” />
    <EventRecordID>705</EventRecordID>
    <Channel>Application</Channel>
    <Computer>server.domain.tld</Computer>
    <Security />
  </System>
  <EventData>
    <Data>3008</Data>
    <Data>A configuration error has occurred.</Data>
    <Data>17/01/2013 15:31:51</Data>
    <Data>17/01/2013 14:31:51</Data>
    <Data>398a6469b56349ebae01d8aa9cc019d1</Data>
    <Data>1</Data>
    <Data>1</Data>
    <Data>0</Data>
    <Data>/LM/W3SVC/2/ROOT/m-1-130029067086927262</Data>
    <Data>Full</Data>
    <Data>/m</Data>
    <Data>C:\Program Files\Microsoft Office Web Apps\BroadcastServices_Host\</Data>
    <Data>server</Data>
    <Data>
    </Data>
    <Data>2004</Data>
    <Data>w3wp.exe</Data>
    <Data>NT AUTHORITY\NETWORK SERVICE</Data>
    <Data>ConfigurationErrorsException</Data>
    <Data>Could not load file or assembly ‘Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified. (C:\Program Files\Microsoft Office Web Apps\BroadcastServices_Host\web.config line 44)
   at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
   at System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()
   at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath)
   at System.Web.Compilation.BuildManager.ExecutePreAppStart()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Could not load file or assembly ‘Microsoft.Build.Utilities, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified.
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark&amp; stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
   at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark&amp; stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
   at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)

</Data>
    <Data>https://wac.domain.tld:443/m/Presenter.aspx?a=0&amp;e=true&amp;WopiSrc=https://lyncfe.domain.tld/DataCollabWeb/wopi/files/1B-1-1DA545D&amp;access_token=AAMFEMcXMba5uZVbva7TUp_-FpUGEMDL0-g4MKvhBFnFdDwj3oGBEMcXMba5uZVbva7TUp_-FpWCAuHYgyDo5MzCtEE9dxeIRDCiiZ3xBoHMQc25gcSH8JPJC5be-oYInVzkjRnDzwgIDURhdGFDb2xsYWJXZWI&amp;fs=false&amp;rec=false&amp;thm=1&amp;ui=en-US&amp;rs=en-US&amp;</Data&gt;
    <Data>/m/Presenter.aspx</Data>
    <Data>A.B.C.D</Data>
    <Data>
    </Data>
    <Data>False</Data>
    <Data>
    </Data>
    <Data>NT AUTHORITY\NETWORK SERVICE</Data>
    <Data>7</Data>
    <Data>NT AUTHORITY\NETWORK SERVICE</Data>
    <Data>False</Data>
    <Data>   at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
   at System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()
   at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath)
   at System.Web.Compilation.BuildManager.ExecutePreAppStart()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
</Data>
  </EventData>
</Event>

Background

Integration between Lync Server 2013 and WAC has been done correctly. If you followed the “Deploy Office Web Apps Server” guide this problem occurs because the Windows Server 2012 prerequisites powershell command is incomplete: you need to install the .NET Framework 3.5 feature for WAC to operate correctly. The “Configuring Integration with Office Web Apps Server and Lync 2013” Lync 2013 Library article doesn’t mention this either.

Solution

Use Server Manager to install the .NET Framework 3.5 Feature or use the following PowerShell command to add it afterwards:”Add-WindowsFeature NET-Framework-Features, NET-Framework-Core”

For new WAC installs use the following modified prerequisite installer script:

Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core

Advertisements

Leave a comment

Filed under Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s