windows2008 IIS7.0使用手记

经过两天奋战,终于将windows2008 和IIS7.0配置完毕
 先将一下注意的问题和心得总结如下:
       IIS 7从核心层讲被分割成了40多个不同功能的模块。像验证(有asp.net 验证、Form验证.windows验证、基本验证、摘要式验证、匿名验证)、缓存、静态页面处理和目录列表等功能全部被模块化。这意味着你的Web服务器可以按照你的运行需要来安装相应的功能模块。可能存在安全隐患和不需要的模块将不会再加载到内存中去,程序的受攻击面减小了,同时性能方面也得到了增强 
   1.IIS对目录的写权限已经不是在IIS6.0中的network service中,而是在IUSR用户中
   2.IIS的应用池有两种模式:一种是经典;另一种是集成;应该选择经典
   3.关于文件名称含有"+"不能显示,在文件C:\Windows\System32\inetsrv\config\applicationHost.config
    中 “<requestFiltering  ">”增加一个属性即可

.....后续

posted on 2008-07-11 13:31 金大侠 阅读(1765) 评论(12)  编辑 收藏 网摘

评论

#1楼 [楼主] 2008-07-12 10:22 金大侠      

System.Runtime.InteropServices.COMException 错误解决办法
运行DCDcomcnfg.exe(组件服务)
找到相应的组件(excel),单击右键属性,在“标识”选项中选择“交换时用户”即可
  回复  引用  查看    

#2楼 [楼主] 2008-07-14 10:59 金大侠      

.net2.0 程序出错,进程终止处理方法
\rootdir\Microsoft.NET\Framework\v2.0.50727\aspnet.config
<legacyUnhandledExceptionPolicy enabled="true" />
  回复  引用  查看    

#3楼 [楼主] 2008-07-14 11:08 金大侠      

可IIS7.0以对服务器的所有请求(例如,.htm,.php,.jsp文件)使用ASP.NET表单认证,成员/角色,以及任何其他特性。   回复  引用  查看    

#4楼 [楼主] 2008-07-14 11:10 金大侠      

托管代码是指用.net framework支持的语言写的代码。.net framework为了让这些代码可以执行,提供了数个核心运行服务,因此这些代码必须向CLR提供最基本的信息,这些信息就叫做“元数据”。在程序中表现为在类前或函数前中括号内的数据。可通过继承System.Attribute来创建自己的元数据特性,如:
[AttributeUsage(AttributeTargets.Class)]
public class InspiredByAttribute:System.Attribute
{
public string InspiredB;
}
  配件是指一个或多个有main入口的应用程序或库。配件可以引用配件。有私有配件和共享配件。私有配件是在单个应用目录中的,共享配件是存储在全局配件缓存(GAC)中的,可用gacutil -i somedll.dll注册到GAC中成为共享配件。对于共享配件有版本协调,即对共享配件加强版本约束。
版本号由四个数字组成(如:5.5.2.33),如果前两个数字中有任意一个不同的配件,就认为是不兼容的;如果第三个不同,就认为是“可能兼容”;如果第四个不同,就认为是兼容的。这些规则可通过配置文件来指定。
  清单是配件是描述,包括资源,类型和引用。
  垃圾收集由运行时组件负责管理对象生命及其占用堆内存的系统。.NET垃圾收集器工作机制:周期性地遍历当前被引用的对象列表,凡是没被发现的对象,都准备销毁并收回所占用内存。
  序列化指将对象转换为字节流的过程,反序列化是从字节流构建对象的过程。
代码访问安全(Code Access Security):CAS是.NET安全模型的一个部分,决定某段代码是否允许执行及使用什么资源。可通过caspol -lg来查看机器上的CAS代码组。例:caspol -ag 1.3 -site www.pconline.com.cn FullTrust来使用网站完全访问你的机器,不受限制。
反射:即通过编程来访问装配件的元数据,因为装配件是自我描述的,即装配件包含了元数据对自身的描述,因此可以通过反射来访问自身的元数据。.NET本身有一些基类可以实现反射。
  回复  引用  查看    

#5楼 [楼主] 2008-07-15 08:11 金大侠      

IIS6重写配置在IIS7中重写无效解决方案由于IIS6只能在请求被分配到Asp.Net引擎后才能发生重写操作,IIS7可以在IIS请求管道的任何地方执行一个HttpModule,

 而且IIS7对于文件或文件夹的访问权限得重新设置.

 以下是错误信息:

 Theresourcecannotbefound.

 Description:HTTP404.Theresourceyouarelookingfor(oroneofitsdependencies)couldhavebeenremoved,haditsnamechanged,oristemporarilyunavailable.PleasereviewthefollowingURLandmakesurethatitisspelledcorrectly.

 RequestedURL:/signin.aspx

 如果是IIS7.0的运行环境,添加该配置

 <system.webServer>

 <modules>

 <!--您的自定义IIS重写模块操作-->

 <addtype="S.Sams.Framework.UrlRewriter.RewriterModule"name="RewriterModule"/>

 </modules>

 </system.webServer>

 问题即可解决!

 摘引自ScottGu的Blog

 <?xmlversion="1.0"encoding="UTF-8"?>

 <configuration>

 <configSections>

 <sectionname="rewriter"

 requirePermission="false"

 type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,Intelligencia.UrlRewriter"/>

 </configSections>

 <system.web>

 <httpModules>

 <addname="UrlRewriter"type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter"/>

 </httpModules>

 </system.web>

 <system.webServer>

 <modulesrunAllManagedModulesForAllRequests="true">

 <addname="UrlRewriter"type="Intelligencia.UrlRewriter.RewriterHttpModule"/>

 </modules>

 <validationvalidateIntegratedModeConfiguration="false"/>

 </system.webServer>

 <rewriter>

 <rewriteurl="~/products/(.+)"to="~/products.aspx?category=$1"/>

 </rewriter>

 </configuration>

  回复  引用  查看    

#6楼 [楼主] 2008-07-16 14:40 金大侠      

IIS 7.0:配置 ASP.NET 模拟身份验证
如果要在 ASP.NET 应用程序的非默认安全上下文中运行 ASP.NET 应用程序,请使用 ASP.NET 模拟。

在为 ASP.NET 应用程序启用模拟后,该应用程序将可以在两种上下文中运行:以通过 IIS 7.0 身份验证的用户身份运行,或作为您设置的任意帐户运行。例如,如果您使用的是匿名身份验证,并选择作为已通过身份验证的用户运行 ASP.NET 应用程序,那么该应用程序将在为匿名用户设置的帐户(通常为 IUSR)下运行。同样,如果您选择在任意帐户下运行应用程序,则它将运行在为该帐户设置的任意安全上下文中。

默认情况下,ASP.NET 模拟处于禁用状态。启用模拟后,ASP.NET 应用程序将在通过 IIS 7.0 身份验证的用户的安全上下文中运行。

  回复  引用  查看    

#7楼 [楼主] 2008-07-17 13:31 金大侠      

使用模拟用户时,如果日期格式改变了,必须用模拟用户登录windows2008后,修改其日期格式,那么.net用的日期格式就会改变   回复  引用  查看    

#8楼 [楼主] 2008-07-19 10:38 金大侠      

IIS7.0配置通过XML文本文件进行管理并且以现有.NETFramework配置存储为基础。IIS和ASP.NET配置设置的结合为所有Web平台配置设置提供了单一配置存储。

 kz2RM9XP1l:c此配置方法代替了IIS早期版本中的IIS元数据库配置。IIS7.0配置文件的默认位置为Windows\System32\Inetsrv文件夹。

 注意

 您不能使用IIS7.0配置文件管理FTP站点的配置,而必须使用元数据库和IIS管理器6.0。您还可以使用此MMC管理单元来远程管理在WindowsServer2003上运行IIS6.0的Web服务器。有关如何在IIS7.0上使用IIS管理器6.0的详细信息,请参阅此管理单元中的帮助。

 IIS7.0的配置数据存储在以下XML文本文件中:

 文件名描述

 Machine.config

 包含整个服务器的设置。其他所有.NET配置文件(包括IIS配置文件)均继承Machine.config中的设置。

 ApplicationHost.config

 允许您将计算机范围的配置存储在下面两个节组之一:

 System.applicationHost,它除了包含非HTTP协议支持以外,还包含站点、应用程序、虚拟目录和应用程序池的配置设置。

 System.webServer,包含网站、Web应用程序、虚拟目录和物理目录以及文件的配置设置,例如安全、HTTP压缩和日志。

 Web.config(根级别)

 U3B!ft$}4J允许您定义各个网站、Web应用程序或者虚拟目录或物理目录的设置。您可以将此文件存储在与代码或内容相同的目录中。

 可以使用此文件覆盖从配置层次结构的较高级别继承而来的设置,也可以锁定继承的设置,使它们不会被较低级别的配置设置覆盖。

 Web.config(应用程序级别)

 允许您定义各个网站、Web应用程序或者虚拟目录或物理目录的设置。您可以将此文件存储在与代码或内容相同的目录中。

 可以使用此文件覆盖从配置层次结构的较高级别继承而来的设置,也可以锁定继承的设置,使它们不会被较低级别的配置设置覆盖。

 下面列出了IIS7.0配置存储具有的一些优势:

 由于在Web.config文件中对IIS配置与ASP.NET配置进行了整合,因此可以更有效地进行应用程序开发和部署。

 ]MMf/^通过使用xcopy来复制配置文件,可以更轻松地部署到其他服务器或Web场。有关使用xcopy复制配置文件的信息,请参阅将配置文件复制到远程服务器。

 将特定Web.config文件的写权限委托给拥有Windows凭据、但不是本地计算机上的管理员组成员的用户,从而可以进行更具体的管理控制。也可以将管理权限委托给拥有非Windows凭据的用户。

 编辑配置文件

 可以使用下列方法之一来编辑IIS7.0配置文件中的设置:

 IIS管理器,一种新的管理用户界面(UI)。

 WMI脚本。

 用来直接编辑配置文件的文本编辑器或XML编辑器。

 IIS7配置API。

 注意

 如果希望在不使用IIS管理器或API的情况下编辑配置文件,您必须熟悉XML。

 配置配置文件的安全性

 为了增强安全性,默认情况下只有服务器管理员可以查看和编辑ApplicationHost.config文件。如果不希望特定的配置节或元素在配置层次结构的较低级别发生更改,可以锁定这些配置节或元素。
  回复  引用  查看    

#9楼 [楼主] 2008-07-19 10:52 金大侠      

关于IIS7.0出错的解决方案
一、请求筛选模块被配置为拒绝包含双重转义序列的请求。HTTP 错误 404.11 - Not Found
1.单击 开始 。 在 开始搜索 框中, 键入 Notepad. 右击 记事本 , 然后单击 作为管理员运行 。

注意 如果提示用于管理员密码或用于确认, 键入密码, 或单击 继续 。
2.在 文件 菜单上, 单击 打开 。 在 文件名 框中, 键入 %windir%\system32\inetsrv\config\applicationhost.config然后单击 打开 。
3.在 ApplicationHost.config 文件, 定位 文件中的 configuration/system.webServer/security/requestFiltering/下
<requestFiltering> 节点。大约360行
将<requestFiltering>
改为
<requestFiltering allowDoubleEscaping="true">
即可


二、关于IIS7.0上传大文件出错的解决方案(描述: 请求筛选模块被配置为拒绝超过请求内容长度的请求)

使用IIS7.0的asp上传大文件时出现如下错误:

HTTP Error 404.13 - Not Found


描述: 请求筛选模块被配置为拒绝超过请求内容长度的请求。
错误代码: 0x00000000
通知: BeginRequest
模块: RequestFilteringModule
请求的 URL: http://localhost/u2/upfile.asp
物理路径: G:\web\u2\upfile.asp
登录用户: 尚未确定
登录方法: 尚未确定
处理程序: ASPClassic
最可能的原因:
Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值。
可尝试的操作:
确认 applicationhost.config 或 web.config 文件中的 configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength 设置。
访问是运行 Internet Information Services 7.0 服务器上承载 Web 站点时出现错误信息: " HTTP 错误 404.13 - CONTENT_LENGTH_TOO_LARGE "

解决方案如下
要解决此问题, 请按照下列步骤:
1.单击 开始 。 在 开始搜索 框中, 键入 Notepad. 右击 记事本 , 然后单击 作为管理员运行 。

注意 如果提示用于管理员密码或用于确认, 键入密码, 或单击 继续 。
2.在 文件 菜单上, 单击 打开 。 在 文件名 框中, 键入 %windir%\system32\inetsrv\config\applicationhost.config然后单击 打开 。
3.在 ApplicationHost.config 文件, 定位 < requestLimits > 节点。
4.删除 maxAllowedContentLength 属性。 或者, 添加值相匹配的 Content-Length 报头, 客户端发送请求作为大小。 默认情况下, 的 maxAllowedContentLength 属性值是 30000000。

例如, 修改下列代码。

<requestLimits maxAllowedContentLength ="<length>" />
5.保存 ApplicationHost.config 文件。


其实II7.0默认的出错,已经告诉我们如何做了,呵呵,这点要比IIS6.0人性化多了。
修改后cmd命令行下打iisreset重起IIS(或是直接使用IIS管理器重起),重新上传文件依旧出错。
不过这就是传统的错误了。
修改MaxRequestEntityAllowed 即可,IIS6.0里,需要如下操作(详见:突破IIS6上传和下载文件尺寸***)
解决方法:
首先停止 IIS 服务,之后打开 C:\Windows\System32\Inetsrv 中的 metabase.XML, 并修改 AspMaxRequestEntityAllowed 为你需要的值(例如 1073741824, 1GB)。
启动IIS服务。

IIS7.0里,内置的ASP模块已经带了这个属性,可以直接修改
步骤如下:
单击所需要站点的名称-在“功能视图”里面双击“ASP模块”,打开“***属性”,将最后一项“最大请求实体主体***[maxRequestEntityAllowed]”改为你需要的值(例如 1073741824, 1GB)。
同时,请注意如果你上传的文件较大,请考虑一下“脚本超时[scriptTimeOut]”是否需要更改,
默认是00:01:30,yaosansi这里改成了00:05:30,当然你也可以在ASP程序里更改超时时间。

三、应用程序中的服务器错误 HTTP Error 404.3 - Not Found 描述: 由于 Web 服务器上配置的多用途 Internet 邮件扩展(Multipurpose Internet Mail Extensions, MIME)映射策略的原因,无法处理所请求的页面。您请求的页面具有无法识别的文件扩展名,因而不被允许。

错误代码: 0x80070032

最可能的原因:

可能是缺少处理程序映射。默认情况下,静态文件处理程序将处理所有内容。
您要使用的功能可能尚未安装。
没有为网站或应用程序启用相应的 MIME 映射。(警告: 请不要为用户不应下载的 .ASPX 页或 .config 文件等内容创建 MIME 映射。)
可尝试的操作: 系统盘:\windows\ServiceProfiles\NetworkService\AppData\Local\Temp这个目录添加一个"Autheticated Users“的读写许可即可。


修改:
C:\Windows\System32\inetsrv\config\applicationHost.config
该文件第108行原文:
<processModel identityType="NetworkService" />
修改为:
<processModel identityType="NetworkService" loadUserProfile="false" />

四、IIS7.0 ASP无法正常连Access数据库问题
在解决这个问题前先说下Vista IIS7.0 ASP环境的配置,如果IIS是默认安装的,那么ASP程序是不能运行的,当在IE中打开扩展名为.ASP文件的时候,iis会当着普通的网页文件来显示。在IE中查看文件的源代码,可以看到ASP文件的所有原始代码,就跟我们双击打开文件一样的。我们需要安装一些功能来支持ASP应用程序的解析,打开:控制面板- 程序 - 程序和功能 - 打开或关闭Windows功能,按照下面这个图示,把相应的ASP选上就行了。

设置好IIS(开启”启用父目录路径”,要不你用../路径的时候可能会出错),做好相关站点的设置,可是运行的时候就提示:

引用[Microsoft][ODBC Microsoft Access 驱动程序] 磁盘或网络错误。
  或(就看你用什么方式连Access了)

引用Microsoft JET Database Engine 错误 '80004005'
未指定的错误
/inc/conn.asp,行 10
  
  解决办法
  把C:\Windows\ServiceProfiles\NetworkService\AppData\Local下的Temp目录添加了everyone的读写权限。再一访问就OK了,至此问题解决 (everyone加读写是我为省事自己加的,其实还可以加的再”精确”点,具体见下)

引用 网上还有一说法给“系统盘:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp”目录添加一个“Authenticated Users”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件
  回复  引用  查看    

#10楼 [楼主] 2008-07-23 11:27 金大侠      

windows2008日期格式显示/的问题   回复  引用  查看    

#11楼  2009-01-19 23:37 懒人ABC      

你好,看了你的文章,非常感谢分享!
我碰到了一个问题,我自己拷贝了一个Exe程序在站点下面。
我想通过它来创建动态链接库,然后把创建的DLL引用到Web程序中,供操作使用。
然而每次都不能成功创建动态链接库。
但是在xp下面可以。

如果有空帮忙解决,请加我MSN:si812cn@163.com。
谢谢!
  回复  引用  查看    

#12楼 [楼主] 2009-01-21 11:30 金大侠      

EXE程序执行应该下载到本地执行,但动态链接库是在服务器上,本地没有
所有不能执行的
  回复  引用  查看    


posted @ 2009-06-17 21:17  冰封的心  阅读(11127)  评论(0)    收藏  举报