Migrating an ASP.NET MVC 4 app from Azure websites to WinHost
About a week ago I've to migrate an ASP.NET MVC 4/EF5 application from Azure websites to WinHost. While the process was really smooth, there were some caveats related to database connections that I want to share with you.
Create and setup the ftp profile on VS and configure the connection string was really easy, WinHost provide you those values and there is nothing special here. But once you deploy your website and try to see it online, you may get the “yellow screen of dead” with the message:
"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)"
Assuming you wrote the connection string properly, this happens because you cannot use the default connection name in your web.config file (this works on Azure websites). You have to explicitly specify a connection name that matches to your DbContext. Once you do that, your DbContext will be able to connect to the database but is going to fail trying to initialize.
The thing is you don’t have admin privileges on WinHost database servers, so there is no way to create your tables (or drop/create, or whatever the strategy you’re using) from your DbContext. Once again, this works fine on Azure websites but you have to do a little work to get it up and running on WinHost. The workaround here is create the database in your development machine, make a backup, and restore it on WinHost using the online administration tool (This is the only way you can backup/restore your databases on WinHost, don’t try with SSMS, VS, or anything else, they ain’t gonna work)
So far, those are the issues I found. If I find something else I'll be posting it here.
Hope this helps.