部署到微软Azure网站Asp.net MVC网站抛出错误

问题描述:

我使用的Visual Studio 2015更新3 我ASP.NET MVC 4网站。目标框架:.NET Framework 4.5。该网站有自己的数据库。该网站在本地工作并与数据库交互((LocalDb)\v11.0)。部署到微软Azure网站Asp.net MVC网站抛出错误

然后我用发布按钮部署现场Azure网站通过VS。 Web App已成功发布。但我无法在浏览器中打开它。我收到以下错误的浏览器:

Server Error in '/' Application.

The system cannot find the file specified

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ComponentModel.Win32Exception: The system cannot find the file specified

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


堆栈跟踪:

[Win32Exception (0x80004005): The system cannot find the file specified] 

[SqlException (0x80131904): 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: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.)] 
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) +1000 
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +800 
    System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +38 
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +741 
    System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +85 
    System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +451 
    System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +108 
    System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +943 
    System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +143 
    System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +22 
    System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +139 
    System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +367 
    System.Data.SqlClient.SqlConnection.Open() +129 
    WebMatrix.Data.Database.EnsureConnectionOpen() +47 
    WebMatrix.Data.<QueryInternal>d__0.MoveNext() +67 
    System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +183 
    WebMatrix.Data.Database.QuerySingle(String commandText, Object[] args) +98 
    WebMatrix.WebData.DatabaseWrapper.QuerySingle(String commandText, Object[] parameters) +19 
    WebMatrix.WebData.SimpleMembershipProvider.CheckTableExists(IDatabase db, String tableName) +54 
    WebMatrix.WebData.SimpleMembershipProvider.CreateTablesIfNeeded() +50 
    WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean createTables) +71 
    WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +51 
    WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables) +55 
    OnlineAuction.MvcApplication.SetSecurityOptions() +60 
    OnlineAuction.MvcApplication.Application_Start() +51 

[HttpException (0x80004005): 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: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.)] 
    System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +477 
    System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118 
    System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +176 
    System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +350 
    System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +303 

[HttpException (0x80004005): 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: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.)] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +657 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +96 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189 

这里是我的数据库连接字符串中Web.config

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=OnlineAuctionDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\OnlineAuctionDb.mdf" providerName="System.Data.SqlClient"/> 

我上传整个Web.config fi le到DropBox


这是数据库的问题吗?我已经发布了整个网站,使用VS中的发布按钮。但可能数据库没有附加到云网络应用程序?我不确定。如果问题在于缺少数据库,我如何发布与网站相关的数据库以便它们一起工作?

问题肯定是网站无法找到或与数据库进行通信。有几种方法可以做到这一点,但你需要弄清楚要如何托管数据库 - 它看起来像你使用SQL,所以你的选择是:

  1. 的SQL Express /的LocalDB上例如,您的网站上
  2. Azure的SQL数据库(将在Azure和访问您的网站托管)
  3. SQL Server中的虚拟机托管在Azure中
  4. 另一个SQL数据库的其它托管(处所也许)并运行可以通过混合连接来访问

我建议使用选项2,因为它为您提供了可随您的应用程序扩展的开箱即用管理解决方案,但是可以通过网络寻址,因此您的Web应用程序的多个实例可以共享它,并自动备份等。等等。

也许分享一些更多的信息,你已经得到了什么或者你想要达到什么?

+0

我已经在Azure中创建了SQL数据库。试图连接我的Web应用程序和SQL它失败:https://*.com/questions/40699106/how-to-deploy-asp-net-mvc-site-with-existing-database-to-microsoft-azure-web -app – Chichi

+0

其他链接有完全不同的失败 - 它连接但模式未创建 –