【问题标题】:ConfigurationManager in System.Configuration.dll make exceptionSystem.Configuration.dll 中的 ConfigurationManager 异常
【发布时间】:2013-01-24 07:33:23
【问题描述】:

我正在为 silverlight 应用程序编写 WCF 服务。在 MainService 我想从配置文件中读取信息。所以我想使用 ConfigurationManager。我将 System.Configuration.dll 添加到项目编译和发布中。然后在调用 WCF 服务后出现错误,见下文。 如果我不使用 ConfigurationManager(不引用 DLL)它正在工作。 这是调用设置和存储设置的部分代码。

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(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) 在 System.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() at GX.Framework.Utils.Encryption.Decrypt(String encryptedText) at ServiceWCF.MainService..ctor() at CreateServiceWCF.MainService() at System.ServiceModel.Dispatcher.InstanceProvider.GetInstance(InstanceContext instanceContext , 消息消息) 在 System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext instanceContext, Message request) 在 System.ServiceModel.InstanceContext.GetServiceInstance(Message message) 在 System.ServiceModel.Dispatc her.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) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher。 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 处的 ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)

【问题讨论】:

    标签: c# wcf config configurationmanager


    【解决方案1】:

    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();
        }
    

    【讨论】:

    • WCF 服务有两个文件: WinServiceWCF.exe WinServiceWCF.exe.config ConfigurationManager 无法从这个配置文件中读取?必须命名为 Web.config?
    • 我认为您的解决方案的类型不是 WCF 服务,您是否在 Web 浏览器中执行它?
    • 它是 WCFService。如果我输入 webbrowser:192.168.7.2:8181/?wsdl 我会从服务中看到 XML。如果我将我的配置放到 APPSECTION 部分,它就可以工作。但是,如果我创建自己的配置部分不起作用。
    • 如果要将连接字符串存储在单独的文件中,可以在 web.config 文件中编写 并使用以下内容创建 connections.config 文件connectionStrings>
    【解决方案2】:

    我解决了异常! 问题出在服务的构造函数中。在构造函数中,我在一种方法中犯了错误。所以现在它的工作。 抱歉发布此错误。

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 1970-01-01
      • 2016-11-29
      • 2013-07-26
      • 1970-01-01
      • 2010-10-09
      • 2020-06-26
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多