簡體   English   中英

C#SqlConnection(IIS問題?)“ ConnectionString屬性尚未初始化”

[英]C# SqlConnection (IIS issue?) “The ConnectionString property has not been initialized”

我有一個奇怪的問題。

我有一個C#/ ASP.Net應用程序,該應用程序連接到SQL數據庫以檢索信息。

當我在本地運行它時,它可以完美運行。 我能夠檢索數據,沒有問題。

我試圖將其部署到網絡上的IIS服務器上,然后開始出現錯誤: The ConnectionString property has not been initialized

這通常意味着變量尚未初始化/沒有值,這很奇怪,因為它在本地運行。 我進行了重新構建,重新部署,確保已擁有所有文件,等等。

我決定嘗試其他方法-我添加了一段代碼(File.WriteAllText)。

private DataTable getStoredProcResults(string procName, string[][] parameters)
    {
        InitSql(true);

        DataTable dt = new DataTable();

        File.WriteAllText(@"C:\Temp\CONNECTION.LOG", connectionDetails.ConnectionString); //Added this
        using (SqlConnection sqlConn = new SqlConnection(connectionDetails.ConnectionString))
        {
            sqlConn.Open();
            SqlCommand sqlComm = new SqlCommand(procName, sqlConn);
            foreach (string[] param in parameters)
            {
                sqlComm.Parameters.AddWithValue(param[0], param[1]);
            }

            sqlComm.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = sqlComm;



            da.Fill(dt);
            sqlConn.Dispose();
        }


        return dt;

    }

這是奇怪的地方。 我可以將connectionDetails.ConnectionString寫入文本文件,並且它具有正確的值。 在本地運行時,我已經將IIS Web服務器上的值與文本文件進行了比較,並且連接字符串完全相同。

如果以下行錯誤表明未初始化ConnectionString,如何將連接字符串寫出到文本文件中?

當我訪問該頁面時,這是IIS服務器上的完整錯誤:

The ConnectionString property has not been initialized.

Exception Details: System.InvalidOperationException: The ConnectionString property has not been initialized.

堆棧跟蹤:

   [InvalidOperationException: The ConnectionString property has not been initialized.]
   System.Data.SqlClient.SqlConnection.PermissionDemand() +6610944
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory,     TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6605639
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +233
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +278
   System.Data.SqlClient.SqlConnection.Open() +239
   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(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +487
   System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +293
   GenericPortalWebForms.Logic.HourGlassJob.getResultSet(String sqlCommand, Boolean fromHourGlassDB) in c:\Users\cthompso\Source\Workspaces\CustomSolutions\Sema\GenericPortal\Hourglass\Web\Logic\HourGlassJob.cs:297
   GenericPortalWebForms.Logic.HourGlassJob.setJobDetails(Int64 wrID) in c:\Users\cthompso\Source\Workspaces\CustomSolutions\Sema\GenericPortal\Hourglass\Web\Logic\HourGlassJob.cs:75
   GenericPortalWebForms.Logic.HourGlassJob..ctor(DataRow hgJobRow) in c:\Users\cthompso\Source\Workspaces\CustomSolutions\Sema\GenericPortal\Hourglass\Web\Logic\HourGlassJob.cs:40
   GenericPortalWebForms.HourGlass.GetAllHGjobs() in c:\Users\cthompso\Source\Workspaces\CustomSolutions\Sema\GenericPortal\Hourglass\Web\Hourglass.aspx.cs:49
   GenericPortalWebForms.HourGlass.Page_Load(Object sender, EventArgs e) in c:\Users\cthompso\Source\Workspaces\CustomSolutions\Sema\GenericPortal\Hourglass\Web\Hourglass.aspx.cs:26
   System.Web.UI.Control.LoadRecursive() +71
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178

================================================== ==========

編輯:對不起,我的代碼在這里:

當我第一次創建對象時,首先要對其進行初始化。

private ConnectionStringSettings connectionDetails = ConfigManager.HourglassDb;

從配置管理器中:

public static ConnectionStringSettings HourglassDb
    {
        get { return ConfigurationManager.ConnectionStrings[ConnectionStringName.Split(',')[2]]; }
    }

並從web.config中:

<add key="ConnectionStringName" value="name=BLAH1,BLAH2,BLAH3,BLAH4" />
<connectionStrings>
    <add name="BLAH3" connectionString="Data Source=SERVER;Initial Catalog=DATABASE;User ID=USER;Password=PASSWORD;" providerName="System.Data.SqlClient" />
</connectionStrings>

在調用connectionOpen()方法之前,您是否嘗試過創建命令對象。 所以像這樣:

SqlCommand sqlComm = new SqlCommand(procName, sqlConn);
sqlConn.Open();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM