用户机密错误 (WCF):web.config 中的用户机密配置不正确
User Secret Error (WCF) : User secrets are not configured correctly in the web.config
我正在尝试学习如何使用用户机密。在之前的 post 中,我在 App Console 上应用它时遇到了一些错误。所以我决定在WCF项目中使用它。
当我单击项目并选择 User Secrets 时弹出此错误:
User secrets are not configured correctly in the web.config file
check that a reference to UserSecretsConfigBuilder has been added to
the <configBuilder> <builder> section of web config
这是错误的图片:
这是我的 web.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="configBuilders"
type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false"/>
</configSections>
<configBuilders>
<builders>
</builders>
</configBuilders>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.7.2"/>
<httpRuntime targetFramework="4.7.2"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- Pour éviter la divulgation d'informations de métadonnées, définissez les valeurs ci-dessous sur false avant le déploiement -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- Pour recevoir les détails de l'exception dans les erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Pour éviter la divulgation d'informations d'exception, définissez-la sur false avant le déploiement -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Pour parcourir le répertoire racine de l'application Web lors du débogage, définissez la valeur ci-dessous sur true.
Définissez-la sur false avant le déploiement pour ne pas divulguer d'informations du dossier de l'application Web.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
非常感谢您。
这 2 个链接解释了如何在 .NET 4.7 项目中添加用户机密:
- https://github.com/aspnet/MicrosoftConfigurationBuilders(导航到 UserSecretsConfigBuilder)
- User Secrets in .NET 4.7 connectionstrings format
TL;DR
将以下行添加到您的 web.config:
<configBuilders>
<builders>
<add name="Secrets" userSecretsFile="~/App_Data/secrets.xml" mode="Greedy" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</builders>
</configBuilders>
通过使用 userSecretsFile
属性 定义机密文件的位置,您还可以使用 userSecretsId
和 GUID 值(或其他东西,不必是一个 GUID),那么该项目将在以下位置创建机密文件:
C:\Users\[Username]\AppData\Roaming\Microsoft\UserSecrets\[YOUR GUID OR IDENTIFIER]
如果您同时使用这两个属性,则 userSecretsFile
属性 将获得优先权。
在您的项目中,您可以右键单击 'Manage User Secrets' 轻松编辑您的用户机密。
我正在尝试学习如何使用用户机密。在之前的 post 中,我在 App Console 上应用它时遇到了一些错误。所以我决定在WCF项目中使用它。
当我单击项目并选择 User Secrets 时弹出此错误:
User secrets are not configured correctly in the web.config file
check that a reference to UserSecretsConfigBuilder has been added to
the <configBuilder> <builder> section of web config
这是错误的图片:
这是我的 web.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="configBuilders"
type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false"/>
</configSections>
<configBuilders>
<builders>
</builders>
</configBuilders>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.7.2"/>
<httpRuntime targetFramework="4.7.2"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- Pour éviter la divulgation d'informations de métadonnées, définissez les valeurs ci-dessous sur false avant le déploiement -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- Pour recevoir les détails de l'exception dans les erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Pour éviter la divulgation d'informations d'exception, définissez-la sur false avant le déploiement -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Pour parcourir le répertoire racine de l'application Web lors du débogage, définissez la valeur ci-dessous sur true.
Définissez-la sur false avant le déploiement pour ne pas divulguer d'informations du dossier de l'application Web.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
非常感谢您。
这 2 个链接解释了如何在 .NET 4.7 项目中添加用户机密:
- https://github.com/aspnet/MicrosoftConfigurationBuilders(导航到 UserSecretsConfigBuilder)
- User Secrets in .NET 4.7 connectionstrings format
TL;DR 将以下行添加到您的 web.config:
<configBuilders>
<builders>
<add name="Secrets" userSecretsFile="~/App_Data/secrets.xml" mode="Greedy" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</builders>
</configBuilders>
通过使用 userSecretsFile
属性 定义机密文件的位置,您还可以使用 userSecretsId
和 GUID 值(或其他东西,不必是一个 GUID),那么该项目将在以下位置创建机密文件:
C:\Users\[Username]\AppData\Roaming\Microsoft\UserSecrets\[YOUR GUID OR IDENTIFIER]
如果您同时使用这两个属性,则 userSecretsFile
属性 将获得优先权。
在您的项目中,您可以右键单击 'Manage User Secrets' 轻松编辑您的用户机密。