在域控制器上安装ASP.net

大可山人
博客专家认证
2003-05-15 04:00:42
在域控制器上安装ASP.net

-------------------------
关键词:域控制器 ASP.net安装
作者:朱继山 Johnsuna
Email:zjs@dagongbao.com
-------------------------

起因:
一位朋友在WIN2K服务器版下安装了.NET框架,SPS运行正常,可.aspx文件无法运行,总是提示500错误!说什么内部服务器错误,向笔者求救。

朋友机子里面装的是win2k server+sp3,sps+sp1,还有.net Framework,安装了七张盘的vs.net。但在运行ASP.net时报如下错误:
事件类型: 错误 事件来源: ASP.NET 1.0.3705.0
事件种类: 无 事件 ID: 1007
事件: 0:16:18 用户: N/A
计算机: INFO 描述:未能启动 aspnet_wp.exe,原因是配置文件的 processModel 节中提供的用户名和/或密码无效。 ASPX文件根本无法运行。

后来笔者经过一番折腾,终于搞定,现贴出来,以供发生类似问题的网友分享。

问题的原因:
ASP.NET不能在域控制器上使用默认的ASPNET帐号。

解决:
因为默认情况下,ASP.NET的Aspnet_wp.exe使用名为ASPNET的本地帐户。在域控制器或备份域控制器上,所有用户都是使用域用户帐号而不是本地帐号,Aspnet_wp.exe运行失败是因为它无法找到名为"localmachinename\ASPNET"的本地帐号,为此你必须指定一个特别的帐号并配置Machine.config文件中<processModel>的属性或者干脆使用系统帐号(SYSTEM account),但是这样做会带来安全方面的隐患。

以下的微软给出的三种解决方案:(可以任选其一)
A、Create a weak account that has the correct permissions, and then configure the <processModel> section of the Machine.config file to use that account.
B、Set the userName attribute to SYSTEM in the <processModel> section of the Machine.config file.
C、Configure the <processModel> section of the Machine.config file to use an administrator account.

建议采用第一种方案A。

实现步骤:

1、在活动目录中建立一个名为ASPUSER的帐户,加入Users用户组。(你也可以直接使用由.NET Framework安装过程中自动创建的ASPNET帐户,以下亦用括号括起“ASPNET”以示对应。)建议修改此帐户的密码并记住此密码。

2、在域控制器安全策略、域安全策略、本地安全策略的“用户权利指派”下“作为批处理作业登录”项上双击,分别将ASPUSER(或ASPNET)帐号加入。(可能需要重启域控制器。)

3、分别找到Aspnet_wp.exe执行目录(如类似:\Framework\v1.0.3705\)和你的网站需要执行ASP.net的所在目录,并分别给ASPUSER(或ASPNET)相应的权限,需要特别注意的是Aspnet_wp.exe执行目录必须要有读取运行以上的权限。

4、使用搜索文件功能找到Machine.config文件(在%Systemroot%\Microsoft.NET\Framework\v1.0.3705目录下),用写字板或记事本打开它[为安全起见,建议修改前备份!],找到<processModel enable=".."……>中的userName="..." password="..."改为你先前所建立的域帐户如:userName="DomainName\ASPUSER"(或userName="DomainName\ASPNET") password="ASPUSER(或ASPNET)的密码"。其中DomainName为你的域控制器域名如:xxx.com等。

5、保存Machine.config文件。

注:
(一)以上步骤是笔者在已安装好IIS、DotNetFx.exe、MDAC2.7版及.Net Framework SDK基础上进行的。如果您还未安装上述软件,必须先进行如下安装:
1、安装IIS(如Server2K及以上版本会默认安装)
2、安装DotNetfx.exe
3、安装MDAC2.7版
4、安装.Net Framework SDK
然后进行上述对ASPUSER用户帐号的设置。

(二)如果您要安装SQL Server 2K 数据库服务器,请在安装.Net Framework之前安装,这样在安装.Net Framework时才能自动将ASP.net帐户加入SQL Server 2k的登录帐户(因为ASP.net均以ASPNET帐户来执行程序),否则使用信任连接时会登录失败。
(三)如果你有VS.net,那么在安装好IIS后,再安装VS.net即可安装所有组件。
(四)如果你安装ASP.net不是域控制器,则不需要上述ASPUSER(或ASPNET)的复杂配置过程。

你成功了吗?

欢迎与我交流。
Email:zjs@dagongbao.com
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnsunac 2003-05-21
  • 打赏
  • 举报
回复
繁简转换问题:
---------------------------
以前解决gb2312/big5实时转换的做法一般是修改Response.ContentEncoding
string switchLanguage(String strLanguage){
if(strLanguage.StartsWith("zh-cn")){
Response.ContentEncoding=Encoding.GetEncoding(936);
return "gb2312";
}
if(strLanguage.StartsWith("zh")){
Response.ContentEncoding=Encoding.GetEncoding(950);
return "big5";
}
Response.ContentEncoding=Encoding.GetEncoding(1252);
return "iso-8859-1";
}
范例:
switchLanguage(Request.UserLanguages[0]);

但有些GB2312简体字没有对应的Big5,所以需要先转换成繁体的Gb2312,再进行转换
如:“秋水无恨”的无,“中国”的国,就会显示“秋水?恨”和“中?”
等需要先转化为“秋水無恨”和“中國”,再转化为Big5。
而filter正好帮助我们实现实时切换,主要源代码如下(_sGB和_tGB是GB2312简繁体对应的库)。
public override void Write(byte[] buffer, int offset, int count)
{
Encoding e=Encoding.GetEncoding(936);
string str=e.GetString(buffer,offset,count);
for(int i=0;i<str.Length;i++){
int j=_sGB.IndexOf(str[i]);
if(j!=-1)str=str.Replace(_sGB[j],_tGB[j]);
}
e=Encoding.GetEncoding(System.Web.HttpContext.Current.Response.Charset);
_sink.Write(e.GetBytes(str), 0, e.GetByteCount(str));

}

范例:
<%@ Page Language="C#" %>
<script runat=server>
protected void Page_Load(Object sender, EventArgs ev)
{
Response.ContentEncoding=Encoding.GetEncoding(936);
if(Request["e"]!=null){
Response.Filter = new qswhFilter.g2bFilter(Response.Filter);
if(Request["e"]=="1")Response.Charset="big5";
}
userName.Text="秋水无恨(qiushuiwuhen)";
}
</script>
<asp:hyperlink runat=server NavigateUrl="g2bFilter.aspx" Text="Gb2312简体" />
<asp:hyperlink runat=server NavigateUrl="g2bFilter.aspx?e=0" Text="Gb2312繁体" />
<asp:hyperlink runat=server NavigateUrl="g2bFilter.aspx?e=1" Text="Big5繁体" />
hi,你好,我是<asp:label runat=server id=userName/>,欢迎来到<%="csdn中国程序员大本营"%>。
ps.如果web.config中有
<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
可省略
Response.ContentEncoding=Encoding.GetEncoding(936);
cs 源代码和dll:
http://www.blueidea.com/user/qswh/g2bFilter.zip
dll直接拷到应用程序的bin目录即可调用
mmkk 2003-05-16
  • 打赏
  • 举报
回复
这个一个BUG,当初遇到到,微软的KB中有提到解决方案
alieneagle 2003-05-15
  • 打赏
  • 举报
回复
好文
imfine 2003-05-15
  • 打赏
  • 举报
回复
good
xinyu_1980 2003-05-15
  • 打赏
  • 举报
回复
这样的安全性应该要比用系统用户高的多
uno 2003-05-15
  • 打赏
  • 举报
回复
贝贝壳壳 2003-05-15
  • 打赏
  • 举报
回复
@_@

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧