2014-02-06 200 views
1

我开发了一个使用Visual Studio 2012的asp.net网站内置模板的网站。SQL连接问题

它在ASP.NET开发服务器上运行良好。

当我上传在IIS上的网站。当我尝试登录时遇到了下面提到的错误。

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: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.

堆栈跟踪

[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: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details. 
)] 
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6675286 
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +688 
    System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +6701832 
    System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +219 
    System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +6703968 
    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +6704427 
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) +610 
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1049 
    System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +74 
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions) +6706995 
    System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions) +78 
    System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +2192 
    System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +116 
    System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +1012 
    System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6711619 
    System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +152 
    System.Data.SqlClient.SqlConnection.Open() +229 
    System.Data.SqlClient.SqlProviderServices.UsingConnection(SqlConnection sqlConnection, Action`1 act) +134 
    System.Data.SqlClient.SqlProviderServices.UsingMasterConnection(SqlConnection sqlConnection, Action`1 act) +3790907 
    System.Data.SqlClient.SqlProviderServices.GetDbProviderManifestToken(DbConnection connection) +10941050 
    System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection) +91 

[ProviderIncompatibleException: The provider did not return a ProviderManifestToken string.] 
    System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection) +10941121 
    System.Web.Providers.ModelHelper.CreateMetadataWorkspace(String providerName, DbConnection connection, String csdl, String ssdl, String msl) +168 
    System.Web.Providers.ModelHelper.CreateEntityConnection(ConnectionStringSettings setting, String csdl, String ssdl, String msl) +298 
    System.Web.Providers.ModelHelper.CreateMembershipEntities(ConnectionStringSettings setting) +51 
    System.Web.Providers.DefaultRoleProvider.IsUserInRole(String username, String roleName) +180 
    System.Web.Security.Roles.IsUserInRole(String username, String roleName) +794 
    LoginPage.Login1_Authenticate(Object sender, AuthenticateEventArgs e) in c:\inetpub\wwwroot\TimeCard\LoginPage.aspx.cs:19 
    System.Web.UI.WebControls.Login.AttemptLogin() +160 
    System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +93 
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +84 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804 

我的webconfig文件

<?xml version="1.0"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> 
    </configSections> 
    <connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-TimeCard-20131218110938;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-TimeCard-20131218110938.mdf" 
     providerName="System.Data.SqlClient" /> 
    <add name="TimeCardConnectionString" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=TimeCard;Integrated Security=SSPI" 
     providerName="System.Data.SqlClient" /> 
    <add name="MCASConnectionString" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=MCAS;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    <add name="TimeCardConnectionString2" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=TimeCard;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <authorization> 
     <allow roles="Admin" /> 
    </authorization> 
    <compilation debug="true" > 
     <assemblies> 
     <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
     <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 
    </compilation > 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Optimization"/> 
     </namespaces> 
     <controls> 
     <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt"/> 
     </controls> 
    </pages> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="~/"/> 
    </authentication> 
    <profile defaultProvider="DefaultProfileProvider"> 
     <providers> 
     <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/"/> 
     </providers> 
    </profile> 
    <membership defaultProvider="DefaultMembershipProvider"> 
     <providers> 
     <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> 
     </providers> 
    </membership> 
    <roleManager enabled="true" defaultProvider="DefaultRoleProvider"> 
     <providers> 
     <add connectionStringName="DefaultConnection" applicationName="/" 
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </providers> 
    </roleManager> 
    <!-- 
      If you are deploying to a cloud environment that has multiple web server instances, 
      you should change session state mode from "InProc" to "Custom". In addition, 
      change the connection string named "DefaultConnection" to connect to an instance 
      of SQL Server (including SQL Azure and SQL Compact) instead of to SQL Server Express. 
     --> 
    <sessionState mode="InProc" customProvider="DefaultSessionProvider"> 
     <providers> 
     <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"/> 
     </providers> 
    </sessionState> 
    </system.web> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246"/> 
     <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246"/> 
     <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> 
    </entityFramework> 
</configuration> 

应该是什么问题呢?

+0

http://stackoverflow.com/questions/16256533/a-network-related-or-instance-specific-错误发生虽然建立一个连接 –

+0

这个问题是非常普遍的,请检查我的答案中的链接,并有几个步骤要做,然后如果你得到错误,甚至在此之后,请让我知道..! –

回答

1

您在连接字符串中为您的数据库使用localhost\SQLEXPRESS - 如果这是一个服务器,它需要替换为活动服务器的数据库实例的名称。

这是你的配置部分

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-TimeCard-20131218110938;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-TimeCard-20131218110938.mdf" 
     providerName="System.Data.SqlClient" /> 
    <add name="TimeCardConnectionString" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=TimeCard;Integrated Security=SSPI" 
     providerName="System.Data.SqlClient" /> 
    <add name="MCASConnectionString" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=MCAS;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    <add name="TimeCardConnectionString2" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=TimeCard;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

你实时的数据库服务器不知道在哪里localhost\SQLEXPRESS是。您需要更新这些connections strings以指向您的服务器正在使用的数据库。

我想你还需要更新凭证。

+0

你可以引导任何例子,因为我只是初学者在软件开发 – SPandya

+0

事情是我不能甚至将mdf文件附加到管理工作室 – SPandya

+0

@SPandya我试图扩展,我不完全确定我还能做什么添加 - 你可以联系你的托管服务提供商的支持团队询问有关连接和部署数据库吗? – Liath

0

这一个

connectionString="Data Source=.\SQLEXPRESS; 

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-TimeCard-20131218110938;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-TimeCard-20131218110938.mdf" 
     providerName="System.Data.SqlClient" /> 
    <add name="TimeCardConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TimeCard;Integrated Security=SSPI" 
     providerName="System.Data.SqlClient" /> 
    <add name="MCASConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MCAS;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    <add name="TimeCardConnectionString2" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TimeCard;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
+0

我发现是因为AppData文件夹中存在LocalDb数据库发生错误 – SPandya

+0

@SPandya您是否使用'.mdf'文件 –

2

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: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.

有下完整的IIS运行时会产生问题的LocalDB的两个属性:

1.LocalDB needs user profile to be loaded

2.LocalDB instance is owned by a single user and private (by default)

很可能用户配置文件未加载。如果LocalDB在IIS下执行,请确保为当前用户启用配置文件加载。

谷歌搜索,发现这个伟大的职位:

Using LocalDB with Full IIS, Part 1: User Profile

当我在本地IIS部署一个ASP.NET MVC 4应用程序到一个新的网站,它创造了一个新的应用程序,我也有这个问题池。 正如上面的文章描述一个必须启用setProfileEnvironment =真正的应用程序池的文件中

C:\Windows\System32\inetsrv\config\applicationHost.config. 

所以添加此

<add name="MyAppPoolName" /> 
<processModel identityType="ApplicationPoolIdentity" 
       loadUserProfile="true" 
       setProfileEnvironment="true" /> 
</add> 

改变配置代码后,不要忘记重新启动应用程序池。

现在你应该阅读的第二个职位,以应付LocalDB实例所有权:

Using LocalDB with Full IIS, Part 2: Instance Ownership