I have an Azure Website that I use to host my MVC + Entity Framework project. When I run the site locally using the same connection to my SQL Azure database, everything wor
You should FTP into your Azure website and also check your connection string there in your web.config
.
When you publish your site your web.config
gets transformed/modified by Azure so it can be that this process messes up something with your connection string which leads to this error. For example if you setup your connection string through the web portal maybe during some copy/pasting the encoding is messed up, etc.
By some research around this, I found out the error occurs in the following possible cases :
Possibility 1: You are probably using the wrong DbConnection
class. If you are using Access then make sure you use OleDbConnection
, not SqlConnection
... and vice versa.
Possibility 2: It indicates that the issue is in some way database related, But the issue is linked to the APP POOL identity way of running web sites on IIS. There is some background on what this means here in Application Pool Identities. We have noticed that we tend not to see the issue on sites which are configured in the more old fashioned way, which is to create a new 'IUSR' user account on the server, then add this user to the IIS users group, and then set the site to use this user rather than the APP POOL identity. Ensure the password expiry issue is sorted on your main admin account on the server. And if this does not resolve the issue, to create a new 'IUSR' Windows user account, and set the site up to use this rather than the APP POOL identity. On shared hosting, this may not be possible, but dealing with the admin password expiry is something the host may still be able to address.
10/2/17 - Using Azure Web App + ASP.NET MVC (.NET 4.6.1) + Entity Framework (latest). For a quick fix, I put the connection string in code and it worked:
public class MyDbContext : DbContext
{
private const string connectionString = "Server=tcp:MYDB.database.windows.net,1433;Initial Catalog=MYDBNAME;Persist Security Info=False;User ID=MYUSERID;Password=MYPW;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
public MyDbContext() : base(connectionString)
{
}
}