Entity Framework (EF)
Issue 1Consider the following scenario:
- You have an application that uses Entity Framework and targets the .NET Framework 4. The EDMX in the application is a version in which enum types were not supported, such as is version 2.0 or an earlier version.
- The application has an entity type in the data layer assembly and a mirror type of the same name in a business layer assembly.
- The business layer assembly uses enum types. However, the data layer does not. Instead, it uses int types to represent the values.
- A LINQ to Entities query in the application contains a cast of the int property to an enum type of the business layer assembly where the mirror type resides.
In this scenario, an unexpected exception may occur that indicates "Schema specified is not valid." The application throws this exception in the .NET Framework 4.5 even if the Microsoft .NET Framework 4 is the targeted platform.
Note This exception does not occur when the application runs in the .NET Framework 4.
ResolutionThis update resolves this issue for EDM models version 2.0 and earlier versions. However, the issue will still occur for EDM models that are version 3.0 or a later version, because that is the expected behavior when enums are supported as part of the model.
Issue 2Consider the following scenario:
- You have an application that uses Entity Framework.
- The entity model constraints in the application differ from the actual constraints in the database. For example, the entity model may indicate that a field is non-nullable. However, it is actually nullable in the database.
- The application contains queries that make Entity Framework generate JOIN statements.
- You upgrade from the .NET Framework 4 to the .NET Framework 4.5.
In this scenario, the application may return results in which the
LEFT OUTER JOIN statements are promoted above the
INNER JOIN statements.
Issue 3Consider the following scenario:
- You have an application that uses Entity Framework.
- The application contains a LINQ to Entities query that includes a JOIN expression, and ends with a SELECT expression that retrieves an anonymous object projection with either one property or at least three properties.
- The LINQ to Entities query is translated to a provider-specific query at run time.
In this scenario, an
ArgumentOutOfRangeException exception occurs.
Cause
Queries that combine
JOIN expressions and anonymous object projections work only when there are two properties contained by the anonymous type.
ASP.NET
Issue 1Assume that you have an ASP.NET Web application that uses output cache. If the application is running when the operating system adjusts the clock, an exception occurs. Additionally, you receive the following error message:
Specified argument was out of the range of valid values. Parameter name: utcDate System.ArgumentOutOfRangeException
at System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate)
at System.Web.HttpCachePolicy.SetLastModified(DateTime date)
at System.Web.UI.Page.InitOutputCache(OutputCacheParameters cacheSettings)
Issue 2Assume that you use a Telerik control in a .NET Framework 4.5-based ASP.NET Web application. The Web application runs under medium trust. In this situation, an exception occurs, and you receive the following error message:
[SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
Telerik.Web.UI.RadUploadHttpModule.CaptureWorkerRequest(Object sender, EventArgs e) +0
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165
Note The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, about the performance or reliability of these products.
Issue 3
Consider the following scenario:
- You have a Web server that hosts an ASP.NET 4.0 website.
- You install the .NET Framework 4.5 on the server.
- You open performance monitor.
In this scenario, seven of the "ASP.NET Apps v4.0.30319(*)" performance counters are numbered instead of using words. For example, the performance counters will resemble the following:
\ASP.NET Apps v4.0.30319(*)\8210
\ASP.NET Apps v4.0.30319(*)\8212
\ASP.NET Apps v4.0.30319(*)\8214
\ASP.NET Apps v4.0.30319(*)\8216
\ASP.NET Apps v4.0.30319(*)\8218
\ASP.NET Apps v4.0.30319(*)\8220
\ASP.NET Apps v4.0.30319(*)\8222
Issue 4Consider the following scenario:
- The Server.TransferRequest method is called in a postback event handler in a page to transfer the request to another page.
- The preserveForm parameter is set to false.
- The postback contains some form data in the request body.
In this scenario, the form data is forwarded to a child request unexpectedly.
Issue 5
Consider the following scenario:
- You have a .NET Framework 4.5-based ASP.NET Web application that is running in IIS integrated mode.
- You set a cookie in an event handler. For example, you set AuthenticateRequest in an HTTP Module.
- You have some static files under the Web application, and the runAllManagedModulesForAllRequests attribute is set to true.
In this scenario, the cookie is cached by proxies incorrectly if a user requests the static files.
Issue 6When you run the Internet Information Services (IIS) worker process (W3wp.exe) in an integrated pipeline mode, the process may crash or become deadlocked. This issue occurs because of an unhandled
NullReferenceException exception in the ASP.NET code.
The deadlock may occur if there is a managed module that listens to the
PreSendRequestHeaders or
PreSendRequestContent notification. The deadlock occurs because of a race condition in the ASP.NET code that handles the
SendResponse notifications that are triggered by the native IIS modules, such as the Microsoft Application Request Routing (ARR) module.
The process may crash when a site is under a heavy load and the site serves requests to asynchronous pages or asynchronous handlers, or when the pipeline has asynchronous modules. This behavior occurs because of the way that the race condition in the ASP.NET code responds when the code finishes asynchronous operations.
Windows Communication Foundation (WCF)
Issue 1Consider the following scenario:
- You have a .NET Framework 4 WCF service that is configured by using a NetTcpBinding binding.
- The mexTcpBinding endpoints share a single port and configure the listenBacklog or maxConnections property on the NetTcpBinding class to have a default value of 10.
In this scenario, an
AddressAlreadyInUseException exception occurs when the application is moved to the .NET Framework 4.5. Additionally, you receive the following error message:
System.ServiceModel.AddressAlreadyInUseException: There is already a listener on IP endpoint 0.0.0.0:xxxx. This could happen if there is another application already listening on this endpoint or if you have multiple service endpoints in your service host with the same IP endpoint but with incompatible binding configurations.
---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.ServiceModel.Channels.SocketConnectionListener.Listen()
--- End of inner exception stack trace ---
at System.ServiceModel.Channels.SocketConnectionListener.Listen()
at System.ServiceModel.Channels.BufferedConnectionListener.Listen()
at System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen()
at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)
at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)
at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.ConnectionOrientedTransportChannelListener.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
Issue 2When you use WCF support for WS-Discovery over UDP, you may encounter one or more of the following unexpected situations:
- There is increased CPU utilization on the server.
- There is more multicast traffic.
- There are many SOAP Fault messages being sent over the network in an environment in which the .NET Framework 4.5 is installed.
This issue may occur even if the service is not compiled to target the .NET Framework 4.5, and instead runs in an environment in which the .NET Framework 4.5 is installed.
For more information about this issue and how to work around this issue, click
WCF generating high computer usage and network storm.
Issue 3Assume that you have a WCF service that is configured by using the
WebHttpBinding binding. You add transport security to the configuration as follows:
<bindings>
<webHttpBinding>
<binding>
<security mode="Transport" />
</binding>
</webHttpBinding>
</bindings>
When you host the WCF service in IIS in the .NET Framework 4.5, an exception occurs. Additionally, you receive an error message that resembles the following:
A binding instance has already been associated to listen URI . If two endpoints want to share the same ListenUri, they must also share the same binding object instance. The two conflicting endpoints were either specified in AddServiceEndpoint() calls, in a config file, or a combination of AddServiceEndpoint() and config.
CauseThis issue occurs because of the addition of automatic endpoints in WCF in the .NET Framework 4.5. When you use the
WebHttpBinding binding, and the explicitly configured binding and automatic binding are mismatched, the previously mentioned exception occurs.
WorkaroundTo work around this issue, insert the following code in the Web.config file:
<appSettings> <add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/> </appSettings>
Visual Studio Project
Issue 1When you load a Visual Studio 2010 C++ Unit Test project in Microsoft Visual Studio 2010 on a computer that has the .NET Framework 4.5 installed, the project does not work correctly. Additionally, you encounter the following issues:
- All P2P references are unresolved in Solution Explorer.
- When you try to run the tests by using the F5 shortcut, a System.Exception exception occurs, and an error dialog box pops up. This causes all test cases to appear as failed.
Issue 2Assume that you build a RESX file by using MSBuild 4.5 to build a Microsoft Visual Studio 2008 project on a computer. The computer has the Microsoft .NET Framework 3.5 and the .NET Framework 4.5 installed, but does not have Microsoft Visual Studio 2012 installed. In this situation, building the RESX file fails, and MSBuild 4.5 reports a build error at the resource generation step because it cannot start MSBuildTaskHost.exe.