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.
Nice information about migrating asp.net. Thanks for sharing. It is really helpful for me.
ReplyDeleteMy pleasure!
Delete