Solved

The connection name 'xxx' was not found in the applications configuration...

Posted on 2011-03-24
11
1,107 Views
Last Modified: 2012-05-11
I am new to asp programming and am developing a simple intranet web site for our company.  So far everything has been working well.  I am developing the web site using vs/vb 2010 on my development computer, then copying the files to our intranet server in the wwwroot directory.  The web.config file from my development computer is also copied each time.

Today I added a bound datagrid to the web site that brings in data from another server "tta-cwdw" and displays records from a table in a database called Retail in the grid.  That works fine on my development computer, but when I copied the web site files to the wwwroot folder on the intranet server, this error is generated:

"The connection name 'ConnectionString_CWDW_Retail' was not found in the applications configuration or the connection string is empty."

The full error message is attached.

I have Googled this error message and found a number of references but none seem to help.  Most say that I need to be sure that the ConnectionString is in the Web.Config file.  I have confirmed this.  See copy of the Web.config file.

Here is the section of code (Line 154...) that is causing the error:

<asp:SqlDataSource ID="DataSource_CWDW_Retail" runat="server"
                                ConnectionString="<%$ ConnectionStrings:ConnectionString_CWDW_Retail %>"
                                ProviderName="<%$ ConnectionStrings:ConnectionString_CWDW_Retail.ProviderName %>"                                
                                SelectCommand="SELECT * FROM [ReportSubscriptions] ORDER BY [RecipientEmail]">
                            </asp:SqlDataSource>                                                

Because I am new to asp development, I think this is probably an easy error to fix.

Would appreciate help with this.  Thank you.
Full error message:

Server Error in '/' Application.
--------------------------------------------------------------------------------

The connection name 'ConnectionString_CWDW_Retail' was not found in the applications configuration or the connection string is empty. 
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.InvalidOperationException: The connection name 'ConnectionString_CWDW_Retail' was not found in the applications configuration or the connection string is empty.

Source Error: 


Line 152:                            </asp:GridView>
Line 153:
Line 154:                            <asp:SqlDataSource ID="DataSource_CWDW_Retail" runat="server" 
Line 155:                                ConnectionString="<%$ ConnectionStrings:ConnectionString_CWDW_Retail %>" 
Line 156:                                ProviderName="<%$ ConnectionStrings:ConnectionString_CWDW_Retail.ProviderName %>"                                 
 

Source File: C:\inetpub\wwwroot\Retail_Reports.aspx    Line: 154 

Stack Trace: 


[InvalidOperationException: The connection name 'ConnectionString_CWDW_Retail' was not found in the applications configuration or the connection string is empty.]
   System.Web.Compilation.ConnectionStringsExpressionBuilder.GetConnectionString(String connectionStringName) +4400005
   ASP.retail_reports_aspx.__BuildControlDataSource_CWDW_Retail() in C:\inetpub\wwwroot\Retail_Reports.aspx:154
   ASP.retail_reports_aspx.__BuildControlpnlRecipients() in C:\inetpub\wwwroot\Retail_Reports.aspx:83
   ASP.retail_reports_aspx.__BuildControl__control4(Control __ctrl) in C:\inetpub\wwwroot\Retail_Reports.aspx:28
   AjaxControlToolkit.TabPanel.OnInit(EventArgs e) in d:\hg\act\Server\AjaxControlToolkit\Tabs\TabPanel.cs:185
   System.Web.UI.Control.InitRecursive(Control namingContainer) +133
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Control.InitRecursive(Control namingContainer) +421
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1954
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 



=========================================================================
copy of Web.config file
=========================================================================

<?xml version="1.0"?>
<configuration>
  <appSettings/>

  <connectionStrings>
    <add name="ConnectionString_CWDW_Retail" connectionString="Provider=SQLOLEDB;Data Source=TTA-CWDW;Integrated Security=SSPI;Initial Catalog=Retail"
      providerName="System.Data.OleDb" />
  </connectionStrings>

  <system.web>
    <!-- 
            Visual Basic options:
            Set strict="true" to disallow all data type conversions 
            where data loss can occur. 
            Set explicit="true" to force declaration of all variables.
        -->
    <compilation debug="true" strict="true" explicit="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <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>
    <!--
          The <authentication> section enables configuration 
          of the security authentication mode used by 
          ASP.NET to identify an incoming user. 
        -->
    <authentication mode="Windows"/>
    <!--
           The <customErrors> section enables configuration 
           of what to do if/when an unhandled error occurs 
           during the execution of a request. Specifically, 
           it enables developers to configure html error pages 
           to be displayed in place of a error stack trace.

           <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
             <error statusCode="403" redirect="NoAccess.htm" />
             <error statusCode="404" redirect="FileNotFound.htm" />
           </customErrors>
        -->
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
      <namespaces>
        <clear/>
        <add namespace="System"/>
        <add namespace="System.Collections"/>
        <add namespace="System.Collections.Generic"/>
        <add namespace="System.Collections.Specialized"/>
        <add namespace="System.Configuration"/>
        <add namespace="System.Text"/>
        <add namespace="System.Text.RegularExpressions"/>
        <add namespace="System.Linq"/>
        <add namespace="System.Xml.Linq"/>
        <add namespace="System.Web"/>
        <add namespace="System.Web.Caching"/>
        <add namespace="System.Web.SessionState"/>
        <add namespace="System.Web.Security"/>
        <add namespace="System.Web.Profile"/>
        <add namespace="System.Web.UI"/>
        <add namespace="System.Web.UI.WebControls"/>
        <add namespace="System.Web.UI.WebControls.WebParts"/>
        <add namespace="System.Web.UI.HtmlControls"/>
      </namespaces>
    </pages>
  </system.web>
  <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
</configuration>

Open in new window

0
Comment
Question by:EYoung
  • 6
  • 4
11 Comments
 
LVL 5

Expert Comment

by:bitref
ID: 35211012
You web.config looks OK.
Make sure you don't have any file with .config extension in your application folder.
0
 
LVL 7

Author Comment

by:EYoung
ID: 35211053
I don't see any file on my development computer or the web server that has a .config extension other than the web.config.

One odd thing that happens each time I copy all of the files from my development computer to the web server is that the Web.config file drops the extension ".config".  I manually have to rename the file from web to web.config on the web server.
0
 
LVL 5

Accepted Solution

by:
bitref earned 400 total points
ID: 35211187
It seesm that your server configuration doesn't allow showing known extensions.
On your server, go to Control Panel --> Folder Options --> View. Then, confirm that Hide extensions for known file types is checked.
After that recheck you Application Folder, espicially web.config file.
0
 
LVL 7

Author Comment

by:EYoung
ID: 35211465
1.  I think your suggestion fixed part of the problem I was having.  I unchecked the "Hide extensions for known file types" option.  Now I see the extension.  In fact, my renaming it from web to web.config before caused the actual file name to become web.config.config which caused IIS to not find web.config.  So that is progress.  Thank you.

2.  Now with the file just named web.config, I am getting a "Login failed for user..." error.  I suspect we are making progress here.  Below is the full error message I am now getting:

Server Error in '/' Application.
--------------------------------------------------------------------------------

Login failed for user 'TTACORP\TTA-INTRANET$'.
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.Data.OleDb.OleDbException: Login failed for user 'TTACORP\TTA-INTRANET$'.

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:


[OleDbException (0x80040e4d): Login failed for user 'TTACORP\TTA-INTRANET$'.]
   System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +1777302
   System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +100
   System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +43
   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +6296143
   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6296606
   System.Data.OleDb.OleDbConnection.Open() +48
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +292
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +420
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +312
   System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +3368519
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +28
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +274
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +105
   System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +183
   System.Web.UI.Control.EnsureChildControls() +182
   System.Web.UI.Control.PreRenderRecursiveInternal() +60
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4185

 


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
0
 
LVL 5

Expert Comment

by:bitref
ID: 35211544
It seems that the database login you are using doesn't have enough privelege.
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 7

Author Comment

by:EYoung
ID: 35211559
I do not get this login failure error when running the web app from my development computer in the VS 2010 IDE.  The error occurs when I run the app directly from the web server or call it from my development computer using IE.

I suspect when I run it from my development computer, I don't have login errors because I am an administrator in the company and so when I run the app from my development computer in the vs 2010 IDE, I am using my login name and password.

But when I run the web app using IE from my development computer or directly from the intranet server, the login failure message occurs because the intranet server is trying to log into the SQL Server tta-cwdw possibly using the anonymous login name?

At any rate, it seems like there is a security issue here when the intranet computer (ttacorp/tta-intranet) tries to access the SQL Server (tta-cwdw) to get the records for the grid.

Thank you for your help.
0
 
LVL 7

Author Comment

by:EYoung
ID: 35211576
Should I try to add more priveleges to ttacorp\tta-intranet, or should I change the login rights in SQL Server (tta-cwdw) to possibly allow tta-intranet to get in?
0
 
LVL 4

Assisted Solution

by:DotNetChano
DotNetChano earned 100 total points
ID: 35212854
Try to change the login rights on the SQL server first.

Also DOUBLE check your connection string to make sure you do not have any errors in the password field
0
 
LVL 5

Expert Comment

by:bitref
ID: 35213003
Set the login you are using as db owner on the database you are using:
Go to SQL Server Management Studio --> Login as administrator --> Right Click Login you are using --> Properties --> Database Mapping --> Select the database --> Check db owner (from below) --> OK
0
 
LVL 7

Author Comment

by:EYoung
ID: 35217332
DoNetChano:

1.  Not sure what login "name" to check on SQL.  The intranet server is called tta-intranet and the error message referred to 'TTACORP\TTA-INTRANET$', but I don't know what name the intranet asp application is using to attempt its login to SQL Server on tta-cwdw to access the Retail database.

2.  Below is the connection string code in the ASP application.  As you can see there is no password field in the code.  I guess it is just using the login name I use on my development computer to log into the SQL Server on tta-cwdw?  It works when I run the asp application from my development computer but fails when running it from the intranet.

Here is the connection string code in my asp.net 4.0 application.  As you can see there is no user or password:

                            <asp:SqlDataSource ID="DataSource_CWDW_Retail" runat="server"
                                ConnectionString="<%$ ConnectionStrings:ConnectionString_CWDW_Retail %>"
                                ProviderName="<%$ ConnectionStrings:ConnectionString_CWDW_Retail.ProviderName %>"                                
                                SelectCommand="SELECT * FROM [ReportSubscriptions] ORDER BY [RecipientEmail]">
                            </asp:SqlDataSource>



bitref:

1.  It looks like I am the owner of the database "Retail".  In SQL SMS it shows "TTACORP\eyoung" as the db_owner of the Retail database.  That is me.  This has not changed as I created the database Retail originally.  I can run the asp successfully from my development computer, I think, because I am logged into it using my admin name eyoung.

2.  Do you think the problem with logging via the intranet is due to the tta-intranet server using a different user name when attempting to log into SQL Server?  I doubt tta-intranet is using my eyoung login name to login into the SQL Server (tta-cwdw) when attempting to read the Retail database.


Here is an overview:

My development computer name is tta-NTWK-133xp2 and is running W/XP
The intranet computer name is tta-intranet and is running IIS 7.5
The SQL Server computer name is tta-cwdw and is running SQL Server 2005

All three computers are physically separate boxes.

When I run the ASP application from my development computer it runs correctly and does access tta-cwdw to retrieve the SQL database "Retail".  That all works fine from my development computer using VS 2010.

However, after copying the ASP application to the intranet web server (tta-intranet) and then attempting to run it from IE8 on either tta-intranet or IE8 on my development computer, the login error appears.

That seems to indicate that the error is due to the intranet computer not having rights to access the Retail database on tta-cwdw.  So that leads me to think that the login name the intranet computer is using is different from my login name.

Thank you for the help and assistance.
0
 
LVL 7

Author Comment

by:EYoung
ID: 35217426
OK, the problem is fixed.  Apparently the intranet server (tta-intranet) uses its own name "TTACORP\tta-intranet$" to log into the SQL Server tta-cwdw.  Once I added "TTACORP\tta-intranet$" to the list of Logins under the SQL Security tab on tta-cwdw, the application worked fine.

Thanks to everyone who helped.  It is much appreciated.
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Suggested Solutions

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Using SQL Scripts we can save all the SQL queries as files that we use very frequently on our database later point of time. This is one of the feature present under SQL Workshop in Oracle Application Express.
This video teaches users how to migrate an existing Wordpress website to a new domain.
Any person in technology especially those working for big companies should at least know about the basics of web accessibility. Believe it or not there are even laws in place that require businesses to provide such means for the disabled and aging p…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now