use*_*134 4 c# encryption asp.net-mvc asp.net-web-api
我正在尝试使用 aspnet_regiis 加密 web.config 文件中给出的连接字符串。所以我试图打开 aspnet_regiis.exe
aspnet_regiis -pe "connectionStrings" -app "/NewTestAPI" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)
或者
aspnet_regiis -pe "connectionStrings" -app "/E:/Dropbox/NewTestAPI" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误,指出“无法为请求的配置对象创建配置文件。失败!” 我什至尝试共享文件夹
aspnet_regiis -pe "connectionStrings" -app "/\\ABC\NewTestAPI" -prov "RsaProtectedConfigurationProvider"
Run Code Online (Sandbox Code Playgroud)
即使这会引发相同的错误,无法为请求的配置对象创建配置文件。失败!”
下面是我拥有的 connectionStrings
<connectionStrings>
<add name="ProConnection" connectionString="Data Source=J;User Id=T;Password=C;pooling=true;min pool size=5;Max Pool Size=60" providerName="Oracle.DataAccess.Client"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我还尝试提供站点的物理路径以及站点 ID,如图所示,但错误相同
aspnet_regiis -pe "connectionStrings" -app "/E:\Dropbox\ABC\TestAPI" -site "3" -prov "RsaProtectedConfigurationProvider"
初步回答:
首先,您应该确保通过以下方式授予对 RSA 加密密钥的访问权限:
.\aspnet_regiis.exe -pa "NetFrameworkConfigurationKey" "MySiteIdentity"
Run Code Online (Sandbox Code Playgroud)
如果您不知道自己的站点标识是什么,可以使用System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
然后,如果 web.config 位于与 DefaultWebsite 不同的网站下,您可能需要指定该-site
选项。如果未指定该选项,则默认为-site 1
(DefaultWebsite,具有 INSTANCE_ID 服务器变量“1”)。为了找到您站点的 INSTANCE_ID,您可以.cshtml
像这样在页面中请求服务器变量:
@foreach (string var in Request.ServerVariables)
{
Response.Write(var + " " + Request[var] + "<br>");
}
Run Code Online (Sandbox Code Playgroud)
现在,假设您发现站点的实例 ID 为 2。您可以在命令中使用它,如下所示:
.\aspnet_regiis.exe -pe "connectionStrings" -app "/NewTestAPI" -site "2"
Run Code Online (Sandbox Code Playgroud)
注意:“/NewTestAPI”路径是一个虚拟路径,并假定您的应用程序作为应用程序托管在本地 IIS 中。此外,-site
仅当您的应用位于与 DefaultWebSite 不同的网站下,或者您删除并再次创建 DefaultWebsite 时,才需要该选项。
更新:实际问题是该应用程序作为网站托管在 IIS 中,而不是应用程序(因此没有虚拟路径,只有物理路径)。这就是为什么 aspnet_regiis 在尝试为其提供虚拟路径(-app
选项)时会失败的原因。要给 aspnet_regiis 一个物理路径,我们必须使用如下-pef
选项:
.\aspnet_regiis.exe -pef "connectionStrings" "E:\DropBox\ABC\TestApi"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1660 次 |
最近记录: |