- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 .NET 3.5 Framework 构建的 Windows 窗体应用程序,该应用程序自行托管 WCF 服务。该服务和应用程序可以自行正常运行。
考虑到是否可以在 app.config 文件中访问地址和绑定(bind)信息,我决定使用 System.Security.Cryptography.Xml.SignedXml.ComputeSignature 添加数字签名。然后我将签名添加到 app.config 并保存。这会在 app.config 中创建一个 Signature 元素,作为 app.config 文件的配置节点的最终子元素。
我添加了一个在启动服务之前检查签名的功能。应用程序正确验证了签名,但是当尝试启动服务时,它会抛出以下嵌套错误:
2.配置系统初始化失败
3.无法识别的配置部分签名。
我将 Signature 元素放置在 app.config 中的位置似乎并不重要。签名总是正确验证,并且服务总是对无法识别的配置部分进行轰炸。注释掉 app.config 中的 Signature 元素和代码中的签名检查,服务将再次启动,不会出现任何问题。
为什么服务会抛出这些错误,我该如何解决这些错误?
这是带有经过编辑的应用程序名称和 URL 的 app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="MyApp.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyAppServicePortBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://myappurl/MyService" binding="basicHttpBinding" bindingConfiguration="MyAppServicePortBinding" contract="MyAppService" name="MyAppServicePort" />
</client>
<services>
<service name="MyApp.MyService" behaviorConfiguration="MyAppServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://mylocalservice:8080/LocalService" />
</baseAddresses>
</host>
<!-- this endpoint is exposed at the base address provided by host -->
<endpoint address="" binding="wsHttpBinding" contract="MyApp.IServiceInit" bindingNamespace="http://mylocalservice:8080/LocalService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyAppServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<applicationSettings>
<MyApp.My.MySettings>
<setting name="DefaultEntryType" serializeAs="String">
<value>M</value>
</setting>
<setting name="CardTypes" serializeAs="String">
<value>1111</value>
</setting>
<setting name="Freq" serializeAs="String">
<value>120000</value>
</setting>
</MyApp.My.MySettings>
</applicationSettings>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>jJYnz3j6LgxqdcUgvNSGNmJVum4=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>czpn/uA31kMSoGFk2hi3SCYky6YM6/MjBT3lpMn7wluCjeFIFj0vJJZVI9ueQQn/RglFi8RIfAyov3rDwiS+pP/4b1Yh8KqNOftHMH9pC+CFsMHMQnIoPHyXVrFLpuU6rzjACdUky4zuB7I7Q5AHf1CF8F9PSEgIxiQ4gHgPhJCLujl6wvsMg3rXDHazRQ2Curj94iKUIsKo50X1dJxER1oWOB9g6QgzqsXTOmUkgGOygJrnrn1WQJ0UbWAvHHXIPZdD6jOL24vqhOYm55+b6hlkWdIvEvLBPVMtv2V8oQqxBpWRDh8ovMn4LQdgcFOpa/vG3ISXGp2oRzsCEpaxCQ==</SignatureValue>
</Signature>
</configuration>
最佳答案
您缺少一些允许将签名嵌入到 app.config 中的基本信息。
来自http://www.beefycode.com/post/Managing-AppConfig-Integrity-using-Xml-Digital-Signatures.aspx关于将签名添加到 app.config 文件:
We can't just plop this new element in the app.config and expect the .NET configuration manager to process it without knowing what it is; this will cause failure during application startup. No special tricks here, we simply need to instruct the configuration system to ignore this element by adding the following to the top of the config file.
首先在 app.config 中输入以下内容:
<configSections>
...
<section name="Signature" type="System.Configuration.IgnoreSectionHandler" />
</configSections>
查看上面的链接以获取完整的 app.config 和使用示例。它应该可以完成这项工作。
关于.net - 使用 SignedXml.ComputeSignature 将签名添加到配置文件后为 "Unrecognized configuration section",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7617726/
我需要安装一个 VPN 配置文件,以后可以在没有用户干预的情况下进行更改。直接的方法是安装 VPN 配置文件,然后安装 MDM 配置文件,以便以后可以更改配置。 但是,我的要求仅与 VPN 配置有关,
配置文件 全局配置文件hibernate.cfg.xml hibernate.cfg.xml --> com.mysql.cj
我想知道有没有一种方法可以设置配置,我可以有两个数据库条目,当环境是本地时和在服务器上时都可以工作。 我很久以前就通过代码进行切换时遇到了一个解决方案。现在无法找到它。你们是怎么做到的? 最佳答案 我
通常我总能在 Stack Overflow 上找到我要找的东西。但是这次我真的难住了。 我已经阅读了针对遇到类似问题的人的其他 Stack Overflow 回复;但无济于事。 (我认为其中一部分原因
我是 Hadoop 新手。我正在尝试设置单节点集群。 我注意到在我读过的文档中(甚至在 Apache 的配置站点上)它总是引用 conf/目录中的配置文件。但是,当我下载 2.X.X 版时,我只能在
好吧,我之前发布了如何读取其他程序的其他配置文件(这里是链接 Previous Post 。我设法做到了。但是现在还有另一个问题。场景是这样的,我有两个程序。程序 A 从配置文件中读取其配置,程序 B
【全局(系统)配置文件】 复制代码 代码如下: /etc/crontab Linux 主要的配置文件都在 etc 目录下。 复制代码
Apache HBase配置文件 本节是本章内容的开篇,我们首先来认识Apache HBase中有哪些需要的配置文件! Apache HBase使用与Apache Hadoop相同的配置系统。所有
我想了解如何为我们的实验构建配置文件 让我们以 AllenNLP 文档中的这个例子为例 training and prediction 特别是这个片段 我们从哪里得到“token_embedders”
我正在研究 MAVEN 配置文件,我有一个关于使用变量设置属性的问题。目前,我正在使用以下配置: Action type D restriction actionTy
我知道以前可能有人问过这个问题,但我似乎无法为我找到正确的答案。 我有一个名为 的 Windows 服务foobar.exe .我有一个名为 的应用程序配置文件foobar.exe.confi
我使用 FitNesse 作为功能测试框架。当 FitNesse 运行需要配置的代码时,我遇到了麻烦。 如果我需要从配置文件中获取连接字符串,我可以通过将它添加到 FitServer.exe.conf
我对我的 Jenkins 输出感到有些困惑。 关于 Jenkins 的工作:(在底部缩短了 pom.xml) mvn deploy -Pprofile1 我所有的插件将运行 4 次: 父/pom.xm
我偶尔会遇到一个问题,即为设备配置开发版本的应用程序。错误消息通常是“找不到此可执行文件的有效配置文件”。 我已遵循所有 Apple 说明:我拥有有效的开发证书,开发人员配置文件包含相关设备的设备 I
我正在尝试在 F# 控制台应用程序中使用 NLog,我已设法使用 App.config 中的配置部分使其工作,但无法使用独立的 NLog.config 文件使其工作。我的 NLog.config 文件
有没有办法像在 rubocop 中一样使用配置文件禁用 puppet-lint 中的检查?配置文件应该是txt文件、json文件还是其他格式? 最佳答案 是的,该文件名为 .puppet-lint.r
我有多个网站,它们都具有相同的代码,但应用程序设置不同。我想将我的应用程序设置放在位于虚拟目录中的单独配置文件中。这将允许我在所有站点之间共享所有代码的单个副本,每个站点具有不同的虚拟目录。 不幸的是
我在 Ubuntu 上使用 ghci 6.8.2。 ghci 是否使用配置文件来进行一些初始设置?例如::设置提示符“ghci>”。 最佳答案 您是否尝试过将 :set Prompt "ghci> "
我继承了一个运行 JBoss 7.x 服务器、java 后端等单个实例的项目。我对 JBoss 完全陌生,我对文件结构的配置感到好奇),我必须拥有什么以及在哪里。 documentation其结构与我
我有一个关于 Android 的问题。我只需要在开始时运行其中一项 Activity 一次。因此,通常最好的解决方案是创建包含标志 isFirstRun 的文件并在应用程序启动后检查该值。 但在我的应
我是一名优秀的程序员,十分优秀!