自从我们的网站于2010年7月上线以来,我一直在使用相同的ConnectionString,连接和与我们的数据库交互从来没有任何问题。
但是,自2011年7月以来,我一直随机获取“ConnectionString属性尚未初始化”错误。
我们的网站在一个可变的时间段内运行良好(从几个小时到几个星期,虽然我注意到今天它更长几个小时),这意味着数据库查询工作正常,人们可以登录等。然后,在某些时候,恰好发生了connectionString错误 从现在开始,我们的网站无法访问,并且在我们尝试访问的任何页面上都会不断返回此错误 有时,在10-1500之后,我们的网站会自行重新上线,并且运行正常,直到错误再次弹出。但大多数时候,我必须使用以下3种方法中的一种使其再次起作用:
1)再次保存Web Config文件,不添加/更改任何内容 2)在IIS中停止和启动站点 3)重新启动服务器
我们的服务器上也有开发网站。但是,永远不会把这个随机错误扔给我。我们的开发站点和生产站点之间的唯一区别是Web Config中的不同数据库,sql用户和身份验证模式(生产= Windows,开发=表单)
.net框架于2011年3月从3.5升级到4 自2011年6月以来,站点物理目录已从原始IIS目录移动到同一服务器上的另一个分区(基本上,只是对站点目录的剪切/粘贴以及IIS中应用程序物理路径的更改)。 每次有一些Windows Server 2008更新都会应用。
1)首先,我试图将我们的站点目录再次放回IIS inetpub / wwwroot。它没有改变任何东西
2)我试图在我们的生产站点上放置与我们的开发站点相同的目录权限。仍然没有。
3)我比较了两个应用程序池的开发/生产,但没有任何差异
4)当然,我在很多网站上搜索过,发现是否有人遇到过这个问题。我找到的与我的问题最相关的话题是这一个:
Web.config - ConnectionString property has not been initialized
但是,我不明白如何检查“在我的Web根文件夹中随机应用的权限”。
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at Database.listeCategories(enuTypeCategorie typeCategorie, enuOrdre ordre, enuActif actif, Boolean withFirstRow, Boolean libTous)
at user_controls_criteresAnnonce.set_secteur(Int32 value)
at user_controls_criteresAnnonce.initValues()
at _default.Page_Load(Object sender, EventArgs a)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
由于错误涉及弹出窗口时的任何页面,因此源始终不同。
站点(开发和生产)在带有IIS 7的Windows Server 2008 SP2上运行 数据库在SQL Server 2005下运行 .NET框架是4(在服务器管理器中编写的ASP版本:ASP.NET 4.0.30319.0)。
ConnectionString存储在Web Config文件中,具有以下模式:
<connectionStrings>
<add name="BosstobossDbBase" connectionString="Server=server_ip; Database=database_name; User=login; password=pass" providerName="System.Data.SqlClient"/>
</connectionStrings>
在任何数据库连接尝试之前,connectionString会受到像这样的SqlConnection对象的影响(conn在类中声明):
conn = New SqlConnection()
conn.ConnectionString = ConfigurationManager.ConnectionStrings("BosstobossDbBase").ConnectionString
conn.Open()
如果您需要进一步的信息,请不要犹豫,问我。我对此感到茫然......任何帮助都会很乐意接受 谢谢!
最好的问候,
凯文
答案 0 :(得分:0)
我将web.config文件更改为此文件,看看是否有帮助:
<connectionStrings>
<remove name="BosstobossDbBase" />
<add name="BosstobossDbBase" connectionString="Server=server_ip; Database=database_name;User=login; password=pass" providerName="System.Data.SqlClient"/>
</connectionStrings>
答案 1 :(得分:0)
我长期面对同样的问题。 我在ASP.Net v2.0上有一个应用程序,它已经正常工作,突然有一天我开始收到这个错误。
我通过以下方式解决了这个问题:
打开inetmgr并单击主服务器。 在“功能视图”中,单击“ConnectionStrings”。 在我的例子中,有两个连接字符串由所有应用程序继承。 原来其中一个字符串无效,当我删除它时,一切都恢复正常。
该机器上的一个用户在一段时间后添加了该字符串,这破坏了所有应用程序。
希望这有帮助。