搜尋此網誌

2012-04-26

ASP.NET Web Deploy 發佈後出現 "初始化字串的格式和開始於索引 0 的規格不相符"

原本好好的專案,換到別台機器發佈後就掛了,錯誤訊息如下:
System.Web.Services.Protocols.SoapException: 伺服器無法處理要求。 ---> System.ArgumentException: 初始化字串的格式和開始於索引 0 的規格不相符。
   於 System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
   於 System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
   於 System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
   於 System.Data.OracleClient.OracleConnectionString..ctor(String connectionString)
   於 System.Data.OracleClient.OracleConnectionFactory.CreateConnectionOptions(String connectionOptions, DbConnectionOptions previous)
   於 System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
   於 System.Data.OracleClient.OracleConnection.ConnectionString_Set(String value)
   於 System.Data.OracleClient.OracleConnection.set_ConnectionString(String value)
   於 System.Data.OracleClient.OracleConnection..ctor(String connectionString)
   於 TWMSMS.cl_DALOracleBase.OpenConnection() 於 C:\TWMSMS\App_Code\cl_DALbase.cs: 行 43
   --- 內部例外狀況堆疊追蹤的結尾 ---

在DB相關程式沒修改下出現ConnectionString錯誤,直覺是web.config的設定被改了,connectionString被改成ReplacableToken:
  <connectionStrings>
    <add name="ConnectionString" connectionString="$(ReplacableToken_ConnectionString-Web.config Connection String_0)" providerName="System.Data.OracleClient"/>
  </connectionStrings>

爬文後發現是vs2010在做發佈時,做了xml轉換的問題,需要在專案的*.csproj的Release加入
AutoParameterizationWebConfigConnectionStrings設定就可以了:
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
  </PropertyGroup>

參考:
微软ASP.NET站点部署指南(12):Troubleshooting
HOW TO:停用 Web.config 轉換
解決 VS 2010 建置部署套件時,連線字串無法正常之問題。
How to get rid of “$(ReplacableToken…)” in web.config completely
Web.config transformation problem with Visual Studio 2010 RSS
Overview Post for Web Deployment in VS 2010
How to “Package/Publish” Web Site project using VS2010 and MsBuild

沒有留言: