I have an issue with my ASP.NET MVC4 application when I publish it to Azure. The roleManager part is not working and the application returns an error when it reaches to this code in my view:
bool isAdmin = User.IsInRole("admin");
And the error is the following:
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)
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.
SQLExpress database file auto-creation error:
The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:
If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102. If the application's App_Data directory does not already exist, the web server account must have read and write access to the application's directory. This is necessary because the web server account will automatically create the App_Data directory if it does not already exist.
If the application's App_Data directory already exists, the web server account only requires read and write access to the application's App_Data directory. This is necessary because the web server account will attempt to verify that the Sql Server Express database already exists within the application's App_Data directory. Revoking read access on the App_Data directory from the web server account will prevent the provider from correctly determining if the Sql Server Express database already exists. This will cause an error when the provider attempts to create a duplicate of an already existing database. Write access is required because the web server account's credentials are used when creating the new database.
Sql Server Express must be installed on the machine.
The process identity for the web server account must have a local user profile. See the readme document for details on how to create a local user profile for both machine and domain accounts.
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.
Stack Trace:
[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: 26 - Error Locating Server/Instance Specified)]
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) +821
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +5771923
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +507
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +90
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +217
System.Data.SqlClient.SqlConnection.Open() +96
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +75
[HttpException (0x80004005): Unable to connect to SQL Server database.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +125
System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +89
System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +29
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +386
Interestingly in my local environment, it works fine, and it happens only in Azure.
For publishing to Azure I reconfigured the following properties in my web.config file as well, BUT I am still suspicious if I am missing some configuration somewhere else, since other parts of the application work fine such as login and registration:
Connection String:
<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-Portal.mdf;Initial Catalog=aspnet-Portal;Integrated Security=True" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="Data Source=tcp:***,1433;Initial Catalog=***;Persist Security Info=False;User ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient" />
</connectionStrings>
And my Entity Framework configuration:
<entityFramework>
<!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">-->
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<!--<parameter value="mssqllocaldb" />-->
<parameter value="Data Source=Data Source=***,1433;Initial Catalog=***;Persist Security Info=False;User ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
I Was wondering, if there is any other configuration which I need to modify for RoleManager in order to work in Azure?
Thank you for your time and consideration.
If we create app with Individual User Accounts, by default, a connectionstring named “DefaultConnection” like below will be added in web.config which point to a LocalDb, if we publish app to Azure App service web app directly, we would see “A network-related or instance-specific error occurred while establishing a connection to SQL Server” error.
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVCAppWithRoleManager-20170630095851.mdf;Initial Catalog=aspnet-MVCAppWithRoleManager-20170630095851;Integrated Security=True"
providerName="System.Data.SqlClient" />-->
As you did, you could modify DefaultConnection with your Azure SQL database. And on my side, I can get login user info and check the role of current user after user login the app.
Related
I am try to connect Azure Cloud Sql Database from my local machine through SQL Server Management Studio (SSMS) 2017/18.In Server Firewall Rule added client IP,but Not getting connected and throwing error as below.
===================================
Cannot connect to integtenantelasticsql.database.windows.net.
===================================
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: TCP
Provider, error: 0 - A connection attempt failed because the connected
party did not properly respond after a period of time, or established
connection failed because connected host has failed to respond.) (.Net
SqlClient Data Provider)
------------------------------ For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=10060&LinkId=20476
------------------------------ Error Number: 10060 Severity: 20 State: 0
------------------------------ Program Location:
at
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, SqlAuthenticationProviderManager
sqlAuthProviderManager) at
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions
options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo,
DbConnectionPool pool, DbConnection owningConnection,
DbConnectionOptions userOptions) at
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection
owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions
userOptions) at
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection
owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory,
TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1
retry) at
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1
retry) at System.Data.SqlClient.SqlConnection.Open() at
Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo
ci, IServerType server) at
Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
===================================
A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection
failed because connected host has failed to respond
Also performed the following Operations:
-Network reset
-IPV4 and IPV6 DNS server address update.
-SQL Server Configuration Manager IPV4 TCP enable disable
-SQL Server services stop, start.
-System windows 10 64bit up to date.
-Network driver uninstall installation.
-Telnet
Telnet cmd: telnet integtenantelasticsql.database.windows.net. 443
working.
-C# sql client:
I have tried sample console app using c# Sql client, but getting the same issue.
Not getting what is the issue? Help is very much appreciate.
Could you please suggest me the solution.
Thanks in advance.
There was a problem with TCP port 1433 not there in my system firewall Inbound setting.
So have did the following steps
-Enabling protocols for port 1433
-Create a Firewall exception
-And Apply to the Database Engine Instance Service
for more details reference link here.
After follow the same reference link problem got solved.
This question already has answers here:
Cannot Connect to Server - A network-related or instance-specific error
(54 answers)
Closed 3 years ago.
Problem: I'm trying to create a login form using built-in (drag and drop) form controls in Visual Studio 2019. It's my first time using these controls as opposed to working with php and switched over for the sake of efficiency. So, I am attached to the idea of using the built-in method for login controls if at all possible.
My project is an ASP.NET Web Application (.NET Framework). I have a separate remote Microsoft SQL Server running and attached via the server explorer as well as a connection string in the web.config file as follows:
<add name="NAME"
connectionString ="Data Source=COMPUTERNAME;Initial Catalog=CATNAME;User ID=tj;Password=Password"
providerName="System.Data.SqlClient"/>
However, this does not help the main issue which is: how do make the login form I have created communicate with my remote SQL Server?
After reading through the stack trace and doing some research, I can conclude that I get the errors below [Results of stack trace] because of the fact that my project is not located in the "My Documents/Visual Studio 2019/..." directory and Visual studio itself is trying to access the actual directory, which it has no READ/WRITE privileges over (even though I tried manually adding those privileges myself), but anyway... Visual Studio would normally add the App_Data directory as well as a built-in database (not ideal) within it which would work with the built-in login controls as is. Instead VS is trying to access a place that it can't along with a database that doesn't exist. I have exhausted the options I know of and have no idea what to try next. I know there are many tutorials out there that cover the general topic, but they do not help my underlying issue or benefit me or my situation any which way since they do not go in depth on everything that can co wrong with a project or unique circumstances such as mine.
Also, the SQL Server is fine. It's been tested in several different ways and is accessible from Visual Studio.
Sources:
(Sorry, did some research before I decided to post, so I lost track of most of my sources)
Initial Tutorial:
https://www.youtube.com/watch?v=Sq_0WrK6odY
Troubleshooting:
how to connect web form with sql server running on an other computer in asp.net
How to connect an asp.net web app to SQL Server
ASP.NET web forms Login control SQL Server data binding?
- https://www.connectionstrings.com/store-connection-string-in-webconfig/
Results of stack trace:
[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: 26 - Error Locating Server/Instance Specified)]
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, SqlAuthenticationProviderManager sqlAuthProviderManager) +947
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +6024351
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +531
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) +156
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) +22
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) +92
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +219
System.Data.SqlClient.SqlConnection.Open() +101
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +78
[HttpException (0x80004005): Unable to connect to SQL Server database.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +131
System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +92
System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +30
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +410`
As your error stated that your connection between your application and sql server is not successful, and further looking into your connection string as stated below
<add name="AnyName" connectionString ="Data Source="ComputerName";Initial Catalog=DBNAME;User ID=tj;Password=Password" providerName="System.Data.SqlClient"/>
In your "Data Source" section SQL Instance is missing like
"Data Source=ComputerName/SqlInstance"
I am working on a Website that was donated to our institution, right now I'm trying to decide exactly how to set up two connection strings (CS) in the Web.config file (some of the details in these connection strings were redacted by the donator).
The CS I have a question about is referenced in sessionState:
<sessionState allowCustomSqlDatabase="true" mode="SQLServer" sqlConnectionString="DevelopmentSessionState" cookieless="false" timeout="20"/>
I'm trying to determine what type of Account I should be using for the UserID in the SessionState CS. In order to get the Website functional I used the sa account, but I know this isn't a good idea - I'm looking for an account to replace sa. I have no idea if this is a user I should define in SQL Server, or if I should use a pre-existing account, or what type of access this user should have.
I am also fuzzy on the idea of why a separate connection string is needed for Session State. The Website's c# code uses the other CS explicitly to connect to the db, but the only reference to the SessionState CS is in Web.config. I have read a lot about Session State and SQLServer mode that past few days, but I haven't found any recommendations for what account to use or why a separate CS is needed for SessionState.
Thanks,
Chris
Update: This is the stack trace from the abend that happens when I substitute my UserID for sa in the Session State CS (I replaced my actual User ID with USERID):
Server Error in '/' Application.
Failed to login to session state SQL server for user 'USERID'.
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.Web.HttpException: Failed to login to session state SQL server for user 'USERID'.
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.
Stack Trace:
[SqlException (0x80131904): Login failed for user 'USERID'.]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4876535
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1121
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +144
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +367
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +225
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +185
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +431
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
System.Data.SqlClient.SqlConnection.Open() +122
System.Web.SessionState.SqlStateConnection..ctor(SqlPartitionInfo sqlPartitionInfo) +93
[HttpException (0x80004005): Failed to login to session state SQL server for user 'USERID'.]
Version Information: Microsoft .NET Framework Version:2.0.50727.5485; ASP.NET Version:2.0.50727.5491
I did finally succeed in creating a user that worked in the Session State CS.
To begin with, rather than running InstallSqlState.sql I ran aspnet_regsql.exe. The SQL file had a warning not to run it standalone and that I should instead use aspnet_regsql.exe, so I did that. I used the following options:
aspnet_regsql.exe -ssadd -sstype p -E -S servername
This created db ASPState and meant that I had to use mode="SQLServer" in in web.config.
I also had to add role 'public' to ASPState as suggested here:
http://forums.asp.net/t/969708.aspx
This post included giving 'public' permissions but did not talk about which ones would be needed, so I had to experiment with that until the CS worked. Permissions were added by right clicking on db ASPState, choosing Properties, selecting Permissions, highlighting database role 'public', then checking off permissions under the 'Grant' heading.
Finally I logged in to SQL Server Management Studio using SQL Server Authentication and created a new user S1. I only gave 'Connect' permission to S1 using the same navigation described above. S1 replaced sa in the session state connection string. Here is the web.config entry for the session state CS. Obviously I changed the pw and servername, but you can see the format I used:
<add name="DVSessionState" connectionString="Data Source=servername;User Id='S1';Password='password'"/>
The following steps describe how to run the InstallSqlState.sql and the UninstallSqlState.sql script files to configure SQL Server mode session state management.
In SQL Query Analyzer, on the File menu, click Open.
In the Open Query File dialog box, browse to the InstallSqlState.sql script file, and then click Open. By default, InstallSqlState.sql is located in one of the following folders:
system drive\WINNT\Microsoft.NET\Framework\version\
system drive\Windows\Microsoft.NET\Framework\version\
After InstallSqlState.sql opens in SQL Query Analyzer, click Execute on the Query menu to run the script.
Before you run the UninstallSqlState.sql script file to uninstall SQL Server mode session state management configuration, you must stop the w3svc process. To do this, follow these steps:
On the Windows Start menu, click Run, type cmd, and then click OK to open a command prompt.
At the command prompt, type net stop w3svc. You receive confirmation that the w3svc process is stopped.
In SQL Query Analyzer, on the File menu, click Open.
In the Open Query File dialog box, browse to the UninstallSqlState.sql script file, and then click Open. By default, UninstallSqlState.sql is located in one of the following folders:
system drive\WINNT\Microsoft.NET\Framework\version\
system drive\Windows\Microsoft.NET\Framework\version\
After UninstallSqlState.sql opens in SQL Query Analyzer, click Execute on the Query menu to run the script.
After you uninstall SQL Server mode session state management configuration, you must restart the w3svc service. To restart the w3svc process, type net start w3svc at a command prompt.
Modify the Web.config File of Your Application
To implement ASP.NET SQL Server mode session state management, you must modify the <sessionState> element of your application's Web.config file as follows:
Set the mode attribute of the <sessionState> element to SQLServer to indicate that session state is stored in SQL Server.
Set the sqlConnectionString attribute to specify the connection string for SQL Server. For example:
sqlConnectionString="data source=MySQLServer;user id=;password="
Note: The user, <user name>, must have permissions to perform this operation on the database.
The modified <sessionState> element should appear as follows:
<sessionState
mode="SQLServer"
sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
cookieless="false"
timeout="20"
/>
Note: Ensure that you use the correct case when you specify the <sessionState> element and the associated attribute values. This code is case sensitive.
I am using Visual Studio 2013 Update 4, I have an ASP.NET MVC Web Application which is using Entity Framework 6.1.1.
When I try to run my web application, it fails to load with an error.
In the console I get the same error repetitively:
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
In the web browser I get this error:
Server Error in '/' Application.
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)
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.
SQLExpress database file auto-creation error:
The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:
If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102. If the application's App_Data directory does not already exist, the web server account must have read and write access to the application's directory. This is necessary because the web server account will automatically create the App_Data directory if it does not already exist.
If the application's App_Data directory already exists, the web server account only requires read and write access to the application's App_Data directory. This is necessary because the web server account will attempt to verify that the Sql Server Express database already exists within the application's App_Data directory. Revoking read access on the App_Data directory from the web server account will prevent the provider from correctly determining if the Sql Server Express database already exists. This will cause an error when the provider attempts to create a duplicate of an already existing database. Write access is required because the web server account's credentials are used when creating the new database.
Sql Server Express must be installed on the machine.
The process identity for the web server account must have a local user profile. See the readme document for details on how to create a local user profile for both machine and domain accounts.
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.
Stack Trace:
[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: 26 - Error Locating Server/Instance Specified)]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1900630
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +545
System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +452
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +198
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +923
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +324
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +646
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +459
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +800
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) +21
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +141
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +252
System.Data.SqlClient.SqlConnection.Open() +130
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +75
[HttpException (0x80004005): Unable to connect to SQL Server database.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +125
System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +89
System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +29
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +386
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.5.27.0
So I tried to connect to the database using SQL Server Management Studio using the connection string taken from the Properties windows in Visual Studio:
Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\Users\Aaron\Desktop\AbcBankSolution\AbcBankWebApplication\App_Data\aspnet-AbcBankWebApplication-20150203085459.mdf;Initial Catalog=aspnet-AbcBankWebApplication-20150203085459;Integrated Security=True
This gives the following error:
The value's length for key 'data source' exceeds it's limit of '128'
Which is odd considering it is only 15 in length...
Finally, in Visual Studio, I can connect and refresh the database in the Server Explorer window, so I really don't know what is going on...
How can I fix this problem?
I tried many different solutions to fix this error. In the end, I discovered that it was the line after where the exception was shown as being thrown which had a problem - not the line where the debugger said it was!
The error looks pretty clear to me, it's unable to find the db in question, is trying to auto-create it in your app, and failing to do so.
Have you tried this part?
If the application is running on either Windows 7 or Windows Server 2008R2, special configuration steps are necessary to enable automatic creation of the provider database. Additional information is available at: http://go.microsoft.com/fwlink/?LinkId=160102.
Also, when you copy and paste your connection string into Management Studio, it's reading the whole string, not just the Data Source portion of the connection string, that's why the length is too long.
The data source length is the entire line length after Data Source=. That is,
Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\Users\Aaron\Desktop\AbcBankSolution\AbcBankWebApplication\App_Data\aspnet-AbcBankWebApplication-20150203085459.mdf;Initial Catalog=aspnet-AbcBankWebApplication-20150203085459;Integrated Security=True
From the start of the line (Data Source=) is 247 characters long. Reducing the length by Data Source= gives us a length of 12 yields 235 characters in length. That far exceeds the max length of 128 character allowed for the property Data Source.
Place your database in a SHORT path, such as C:\DSolution. Cut down its name to something like ABS-2015020308.mdf Remember that all the specifiers such as Initial Catalog= and ;Integrated Security=True count as part of the Data Source property length. See if you even need to specify Initial Catalog.
Remember, you have to make everything from (LocalDB) to ;Integrated Security=True fit in less than 128 characters. So shorten your paths, and shorten your name at a minimum.
I can't comment on the solution of Aalawlx ... but in my case it was the same.
I had a line Membership.GetUser().ProviderUserKey.ToString() where the debugger stopped just before and gave me the SQL Error .... damn, costed me a long long lonnngg time and lots of Google :-)
Playing with azure, have a connection string. When the web app hits the first call that requires hitting the database i get this exception.
An exception of type 'System.InvalidOperationException' occurred in System.Data.dll but was not handled in user code
Additional information: The ConnectionString property has not been initialized.
the stack trace is
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext`1.IsIdentityV1Schema(DbContext db)
Fortunatley its on my constructor:
public SisyphusContext(string connectionString)
: base(connectionString)
{
}
and the connection string in there is valid. I took it, made a console app opened a connection selected a load of data. Interestingly the web app when it started successfully seeded the database presumably using this very connection string. (Well we know it cant of ...)
So my question: What is going on? How do i fix it?
Everything i have found suggests the string is wrong, but i have shown this is not the case. I suspect its magicking a connection string from somewhere but i cannto find it (in configs or publish files)
Although that said the seeding uses UserManager and RoleManager, wheras this uses my DbContext. That said i pass my context using the constructor here to build it - so thats probably not useful.
update:
here are the connection strings as part of deployment: found in obj\Release\Package\PackageTmp of the web project.
<connectionStrings>
<add name="DefaultConnection"
connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0)"
providerName="System.Data.SqlClient" />
<add name="Sisyphus.Core.Repository.SisyphusContext" connectionString="$(ReplacableToken_Sisyphus.Core.Repository.SisyphusContext-Web.config Connection String_0)"
providerName="System.Data.SqlClient"/>
<add name="Sisyphus.Core.Repository.SisyphusContext_DatabasePublish"
connectionString="$(ReplacableToken_Sisyphus.Core.Repository.SisyphusContext_DatabasePublish-Web.config Connection String_0)" providerName="System.Data.SqlClient"/>
</connectionStrings>
The thing is the connection string works. Just not in azure.
Is that Azure Web-Site or Web-Service?
In case of Web-Sites, Azure has connection strings in it's own configuration (Configuration page within portal). Check there if connection string is set.
You have 2 options here: keep connection string set in Azure config: make sure it is a correct one. Or delete connection strings from Azure entirely and use web.config settings. And if you are using web.config, make sure you transform your connection string correctly when deploying.
If your connection strings are fine in Azure portal, I'm pretty sure they are messed up during deployment. WebDeploy has a tendency to do strange things with connection strings, you need to stop it. So when you deploy, on settings page uncheck "Use this connection string":
And once you have deployed to Azure you can check the state of web.config either through Visual Studio 2013 Server Explorer:
Or through Kudu which you can access via https://<mywebsitename>.scm.azurewebsites.net/DebugConsole and navigate to web.config: