2013-01-24 39 views
0

我正在爲Silverlight應用程序編寫WCF服務。在MainService中我想從配置文件讀取信息。所以我想使用ConfigurationManager。我添加了System.Configuration.dll到項目編譯和發佈。然後在調用WCF服務發生錯誤之後,請參閱下文。 如果我不使用ConfigurationManager(不參考DLL),它正在工作。 以下是在config中調用設置和存儲設置的代碼的一部分。System.Configuration.dll中的ConfigurationManager出現異常

var connectionManagerDatabaseServers = ConfigurationManager.GetSection("ConnectionManagerDatabaseServers") as NameValueCollection; 
string config = connectionManagerDatabaseServers["ConnectionString"]; 

<configSections> 
    <section name="ConnectionManagerDatabaseServers" type="System.Configuration.NameValueSectionHandler" /> 
</configSections> 

<ConnectionManagerDatabaseServers> 
    <add key="DatabaseType" value="1" /> 
    <add key="ConnectionString" value="VALUE" /> 
</ConnectionManagerDatabaseServers> 

服務器遇到錯誤處理請求。例外消息是'填充無效,無法刪除。'。查看服務器日誌獲取更多詳細信的異常堆棧跟蹤是:

在System.Security.Cryptography.RijndaelManagedTransform.DecryptData(字節[] INPUTBUFFER,的Int32 inputOffset,的Int32 inputCount,字節[] & OutputBuffer中,的Int32 outputOffset,PaddingMode paddingMode,布爾式Flash)在系統。 Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte [] inputBuffer,Int32 inputOffset,Int32 inputCount)System.Security.Cryptography.CryptoStream.FlushFinalBlock()System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)System.IO。 Stream.Close()在System.IO.Stream.Dispose()在GX.Framework.Utils.Encryption.Decrypt(字符串encryptedText)在ServiceWCF.MainService..ctor()在CreateServiceWCF.MainService()在System.ServiceModel.Dispatcher .InstanceProvider.GetInstance(InstanceContext instanceContext,Message message)在System.ServiceModel.Dispatcher.Ins tanceBehavior.GetInstance(的InstanceContext的InstanceContext,消息請求)在System.ServiceModel.InstanceContext.GetServiceInstance(消息信息)中的System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc & RPC)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc & RPC)在在系統System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc & RPC)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc & RPC)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc & RPC)。 ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc & rpc)at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc & RPC)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc & RPC)在System.ServiceModel.Dispatcher.MessageRpc.Process(布爾isOperationContextSet)

回答

0

我解決了異常! 問題出在服務構造函數中。在構造函數中,我在一個方法中犯了一個錯誤。所以現在它的工作。 對不起,發佈這個錯誤。

0

Musketyr,配置文件必須名爲Web.config

<configuration> 
     <appSettings> 
     <add key="DatabaseType" value="1" /> 
     <add key="ConnectionString" value="VALUE" /> 
     </appSettings> 
     ... 


    try this 
    [WebMethod] 
    public string GetString() 
    { 
     return ConfigurationManager.AppSettings["ConnectionString"].ToString(); 
    } 
+0

WCF服務有兩個文件: WinServiceWCF.exe WinServiceWCF.exe.config ConfigurationManager中不能從這個配置文件讀取?它必須命名爲Web.config? – Musketyr

+0

我認爲您的解決方案的類型不是WCF服務, 您是否在Web瀏覽器中執行它? –

+0

這是WCFService。如果我把網頁瀏覽器:http://192.168.7.2:8181/?wsdl我看到服務的XML。 如果我把我的配置添加到節APPSECTION中,它正在工作。但如果我創建自己的配置部分不工作。 – Musketyr