配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息: 未能使用提供程序“RsaProtectedConfigurationProvider”进行解密。提供程序返回错误信息为: 打不开 RSA 密钥容器。
源错误:
行 2: <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
行 3: <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
行 4: <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
行 5: xmlns="http://www.w3.org/2001/04/xmlenc#">
行 6: <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
源文件: C:/Program Files/Microsoft/.NET Pet Shop 4.0/Web/web.config 行: 4
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42
解决方案在下面这位兄弟的blog里找到了。
http://azhai.cnblogs.com/archive/2006/01/30/324346.html
具体为:
运 行cmd,执行以下 aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY/NETWORK SERVICE" 说明:注册默认的 RsaProtectedConfigurationProvider 的RSA 密钥容器, NetFrameworkConfigurationKey 是 RsaProtectedConfigurationProvider 的默认provider。 成功!
注意:你要是同时装了1.1和2.0,请找到2.0目录下的aspnet_regiis否则当然不成了。
然后又碰到第二个问题,具体描述和解决在下面这个兄弟的blog里。
http://zygoses2gether.cnblogs.com/archive/2006/01/05/311614.html
非域环境下的安装
问题:
系统提示“用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败”
解决方法:
新建登录
在SQL Server企业管理器里,在安全性-登录里,新建一个登陆,在名称右边点"..."按钮,名称选择IIS_WPG,再点成员按钮,选择NETWORK SERVICE',确定以后,使用windows身份验证,允许访问,数据库选择Portal,确定
赋予权限
SQL Server企业管理器=〉安全性=〉登录=〉双击NT AUTHORITY/NETWORK SERVICE=〉“数据库访问”TAB页=〉授予对Portal数据库的访问权限
域环境下的安装
问题:
系统提示“用户 'IUSER_机器名' 登录失败”
<%@ Page Language="C#" %>
<%
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
%>
保存 my.aspx 到你的web目录 ,运行一下窗体显示 “ NT AUTHORITY/NETWORK SERVICE ”。成功!
2、(关键一步)运行cmd,执行以下
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY/NETWORK SERVICE"
说明:注册默认的 RsaProtectedConfigurationProvider 的RSA 密钥容器,
NetFrameworkConfigurationKey 是 RsaProtectedConfigurationProvider 的默认provider。 成功!
3、现在,可以加密web.config ,运行:
加密:aspnet_regiis -pe "connectionStrings" -app "/Myweb"
说明:"connectionStrings" 是要加密的节,"/Myweb"是的web目录
解密:aspnet_regiis -pd "connectionStrings" -app "/Myweb"
成功!
4、这样就可以在程序里调用了(不用解密, 哈哈):
...
string connstr= ConfigurationManager.ConnectionStrings["myConnstr"].ConnectionString.ToString();
...
同样的,也可以用创建自己的RSA 密钥容器,如下:
(1)、创建 "MyKeys" 密钥容器,运行:aspnet_regiis -pc "MyKeys" -exp
(2)、在web.config里加入以下:
<protectedData>
<providers>
<add name="MyProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0. 0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d0a3a,
processorArchitecture=MSIL"
keyContainerName="MyKeys"
useMachineContainer="true" />
</providers>
</protectedData>
保存。
(3)、授予帐户对计算机级别的 "MyKeys" RSA 密钥容器的访问权限,运行:
aspnet_regiis -pa "MyKeys" "NT AUTHORITY/NETWORK SERVICE"
(4)、现在,可以加密web.config ,运行:
加密:aspnet_regiis -pe "connectionStrings" -app "/Myweb" -prov "MyProvider"
说明:"connectionStrings" 是要加密的节,"/Myweb"是的web目录,"MyProvider" 自己密钥容器
解密:aspnet_regiis -pd "connectionStrings" -app "/Myweb" -prov "MyProvider"