如何用Indexing Service来对Windows Server 2008中的IIS 7.0网站进行索引

根据如下步骤进行操作: 安装IIS 6 Management Compatibility ============================= 点击Start->All Programs->Administrative Tools, 之后点击ServerManager 在Console tree of Server Manager, 展开Roles,之后右键Web Server(IIS),点击Add Role Services 在Add Role Service Wizard中,选择IIS 6 management compatibility, 然后点击Next 按照Add Role Service Wizard中的instruction来完成安装 选择你要找的 web site ============================== 在Indexing MMC中右键点击你的catalog选择Properties 点击Tracking tab 在”WWW Server”下拉列表中选择web site 点击OK 如果再次打开property页面,你可以看到”WWW Server”区域还是空的,这个只是一个UI的问题。 为验证是否选择了这个web site,检查下苏注册表的值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\[Catalog Name] IsIdexingW3Svc W3SvcInstance IsIdexingW3Svc的值应该是1,W3SvcInstance应当是所选的web site instance 设置ContentIndexed metabase…

0

如何在IIS 6.0中使用256 bit SSL

  3个步骤: 1. 安装此修复程序http://support.microsoft.com/kb/948963,以支持AES128加密和AES256加密。 2. Cipher suites的顺序在Windows 2003命令是固定好的, AES 128是最高优先级的,AES 256排在其后。我们只需要禁用AES 128而开启AES 256使得AES 256拥有最高的优先权。 a. 在IIS6.0中打开regedit.exe的机器。 b. 进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers,应该能够发现有很多子项,例如AES 128/128。 c. 在子项的AES 128/128,创建一个DWORD值”启用”,将其设置为值0。这意味着我们将禁用AES 128。 3. 重新启动IIS 6.0的机器。 这对支持AES 256的Vista/Windows7机器,可以使用IE浏览IIS6.0 HTTPS网站,这里的SSL使用256位加密。   Xin Jin -微软全球技术支持中心Internet 开发者支持组  

0

由string.IndexOf引起的ASP.Net应用挂起

最近有一个有趣的案例,我们发现String.IndexOf会造成ASP.Net应用挂起。   问题描述: 通常这种ASP.Net应用程序将挂起,因此IIS工作进程需要重新启动使得应用程序能够正常运行。即使当负载比较低的时候也会发生这种情况。   排除故障: 像以前一样,我们抓获挂起dump,我们可以看到几乎请求都会被GC阻止。下面是一个示例调用堆栈。   ntdll!ZwWaitForSingleObject kernel32!WaitForSingleObjectEx mscorwks!CLREventWaitHelper mscorwks!CLREvent::WaitEx mscorwks!SVR::gc_heap::wait_for_gc_done mscorwks!SVR::gc_heap::try_allocate_more_space … Some customer code here … System_Web_ni!System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)   但是,如果去查看一下GC线程,发现他们根本不在GC状态。之后我们发现线程48禁用了PreEmptive GC,不允许GC来暂停它。所以GC必须等到这个线程结束。   PreEmptive Lock ID OSID ThreadOBJ State GC GC Alloc Context Domain Count APT Exception 24 1 1e48 000000000015f280 1808220 Enabled 00000000902c9e50:00000000902c9e70 00000000001bbbe0 1 MTA (Threadpool Worker) …………………… 48 8…

0

当一个进程中加载多个.NET Runtime的时候如何在托管调试中加载指定的mscordacwks.dll

当多个.NETRuntime加载在一个目标进程或一个dump文件中,例如:  0:030> lm  start end module name  00000000’1b6d0000 00000000’1b9ba000 System_Data (deferred) …  000007fe’f3e60000 000007fe’f47c5000 clr (deferred) …  000007fe’f9880000 000007fe’fa230000 mscorwks (deferred) …  0:030> lmvm clr  start end module name  000007fe’f3e60000 000007fe’f47c5000 clr (deferred) Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll  Image name: clr.dll  ……  CompanyName: Microsoft Corporation  ProductName: Microsoft® .NET Framework  InternalName: clr.dll  OriginalFilename: clr.dll  ProductVersion: 4.0.30319.1  FileVersion: 4.0.30319.1…

0

高性能ASP.NET应用程序(2)——ASP.NET缓存简介

上次我们介绍了ASP.NET应用程序状态管理方面的一些内容。今天,我们将继续上次关于编写高性能ASP.NET程序的话题,探讨一下ASP.NET的缓存机制。在编写ASP.NET应用程序时,能否有效地利用缓存对于程序的响应时间和资源管理方面至关重要。这一次,我们将讨论以下四个部分:     1)正确地使用缓存API     2)利用输出缓存和片段缓存     3)缓存在Web Farm中的应用     4)有效应用缓存方面的一些建议     缓存API非常简单并易于使用,但仍然有一些情况下,你应该避免使用它们。例如,如果你要缓存的数据是特定于某个用户的,那么还是保存在会话状态中为好。如果某些数据更新非常频繁,那么这些数据在缓存中也不会被保存很久,因此缓存这样的数据对性能提高没有任何好处。我想提请您特别注意一下的是AddValidationCallback。这个函数在当你想为不同的客户定制缓存数据时是非常有用的。下面的代码演示了如何使用AddValidationCallback来依据输入的查询字符串自定义请求的处理过程的。 <script language=”c#” runat=”server”>      HttpContext ctx = HttpContext.Current;    static string validationstate;      public void Page_Load()    {       Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(ValidateCache), null);       ctx.Response.Write(“”);    }      public static void ValidateCache(HttpContext context, Object data, ref HttpValidationStatus status)    {      …

0

高性能ASP.NET应用程序(1)——优化状态管理

         今天我们来聊一下在编写ASP.NET应用程序的时候如何优化状态管理。我相信绝大多数的ASP.NET开发人员或多或少的都会对使用ASP.NET的状态有所了解。在本文中,我们不会把如何使用ASP.NET的状态作为重点,而更侧重于讨论如何更加有效率和有效果的管理ASP.NET的状态。Web应用程序为状态管理提出了一些具体的挑战,尤其是Web场/园的情形。您就状态存储的位置和方法所作出的决定对您的应用程序的性能和扩展性将会产生巨大的影响。          总的来说,ASP.NET中有3种状态:应用程序状态、会话状态和视图状态。他们分别需要在不同的情形下使用。应用程序状态应用于所有的用户和会话。而会话状态用于存储单个用户的状态。在这里单个用户可以理解为来自同一个浏览器的请求。视图状态用于存储单个页面的状态信息,就像在某个具体网页的控件中包含的内容。归结起来有2种状态管理指南:1)在客户端上存储简单的状态;2)考虑序列化带来的开销。对于第一点,当视图状态不可用时您可以考虑利用客户端cookie、查询字串或者隐藏控件。考虑到状态的序列化,请确保只在必要时才进行存储,并且倾向于存储简单的类型(约15%到25%的性能影响)而非复杂的对象(可能会有更大的影响)。          现在我们来分别谈一下怎样最优化应用程序状态、会话状态和视图状态管理。          应用程序状态管理技巧: 1. HttpApplicationState VS 静态属性:您应该避免在应用程序对象中存储数据。取而代之的是,您可以使用应用程序类的静态成员。您可以由此获得性能提升因为访问静态成员会比访问应用程序对象快得多。一个例子是: <% private static string[] _states[]; private static object _lock = new object(); public static string[] States {   get {return _states;} } public static void PopulateStates() {   //ensure this is thread safe   if(_states == null)   {     lock(_lock)     {…

0

如何解决在Win2003的Oracle链接服务器上MSDTC事务失败问题

  在企业环境中,客户有时需要设置MSDTC事务来与远程Oracle目标服务器协同工作。由于跨产品的设置十分复杂,有时我们在更新一个已链接的Oracle数据库中的数据时可能会面临事务失败,例如: 服务器:消息 7391,级别16,状态1,行1 该操作无法执行,因为OLE DB Provider ‘MSDAORA’ 无法启动分布式事务。 OLE DB错误跟踪 [OLE / DB Provider ‘MSDAORA’ ITransactionJoin::JoinTransaction返回0x8000d048]。 下面是帮助我们缩小和解决类似的问题的一般的步骤(开始操作之前,先尝试使用SQL的普通的select语句查询Oracle,确保服务器名称解析和它们之间的网络正常): 1。在Windows Server 2003中,选择”添加/删除程序程序”控制台,Windows组件中的”启用网络DTC访问”必须启用。可以在Windows组件\应用程序服务器\启用网络DTC访问下启用它。请参考: 817064如何在Windows Server 2003启用网络DTC访问 http://support.microsoft.com/default.aspx?scid=kb;EN-US;817064 2。打开DCOMCNFG,确保MSDTC选项卡下的安全配置的设置是正确的:   3。打开注册表,在Security键中,确保注册表值和UI设置相匹配: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security   4。 注册表中Oracle模块的配置是正确的: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI   OracleXaLib=oraclient9.dll OracleSqlLib=orasql9.dll OracleOciLib=oci.dll   尽管在这里我们使用Oracle 9i客户端作为举例,我们应该知道,在Microsoft数据访问组件(MDAC)2.5版本之后,微软的ODBC驱动和OLE DB Provider都只支持Oracle7和Oracle 8i:http://support.microsoft.com/Default.aspx?id=244661 一个新的支持Oracle 9i客户端的Microsoft.NET Managed Oracle Provider现已推出。请访问以下Microsoft网站来下载这个Provider:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4F55D429-17DC-45EA-BFB3-076D1C052524 对于其他版本的Oracle客户端(7 / 8)注册表键值设置,请参考: 193893 有关Oracle与Microsoft Transaction Server和COM…

0

如何解决浏览ASP网页时IIS7出现404.17错误

症状: 用户报告在Windows2008  64位系统上浏览ASP页面时出现404.17的问题。如果重装IIS服务,问题就不会再出现,但是在安装了SMS(System Management Server)后,同样问题又会出现: 需要检查的东西: 1. 启用IIS7的Failed Request Tracing log功能来检查具体的报错信息。这个案例中的报错信息如下所示: -MODULE_SET_RESPONSE_ERROR_STATUS ModuleName StaticFileModule Notification 128 HttpStatus 404 HttpReason Not Found HttpSubStatus 17 ErrorCode 2147942450 ConfigExceptionInfo  Notification EXECUTE_REQUEST_HANDLER ErrorCode The request is not supported. (0x80070032) 这个错误信息是在告诉用户没有ASP handler来处理请求,所以最后一个模块-StaticFileModule处理.asp的请求时候,以”not supported”结束。 事实上这个错误信息只是在告诉用户这个ASP handler不能正常处理.asp的请求。所以我们还是需要找出真正引起错误的原因。 检查了ApplicationHost.config:  <applicationPools>             <add name=”DefaultAppPool” enable32BitAppOnWin64=”true” managedPipelineMode=”Classic” />       </system.webServer>     <location path=”” overrideMode=”Allow”>        …

0

如何解决系统事件出现DCOM 10009错误?

症状: 我们有时在系统事件中会遇到DCOM 10009的错误(如下所示),或者会在DCOM客户应用程序中接收到错误代码0x800706ba: Event Type:        ErrorEvent Source:    DCOM|Event Category:                NoneEvent ID:              10009Date:                     2010-2-22Time:                     10:02:07User:                     N/AComputer:          <Computer Name>Description: DCOM was unable to communicate with the computer <Target Computer Name> using any of the configured protocols. Simply speaking, DCOM 10009 indicates that the DCOM client located on this <Computer Name> can’t communicate with the DCOM|COM+ server located…

0

IIS6.0中应用程序池的下拉列表中显示<Invalid Application Pool>

症状: 应用程序池的下拉列表中只显示<Invalid Application Pool>条目。 参照文档做了以下步骤和IIS reset,但是仍然没有解决问题: 1. Cannot Select an Application Pool in IIS 6.0 “Invalid Application Pool” message: http://blogs.iis.net/lprete/archive/2008/06/22/cannot-select-an-application-pool-in-iis-6-0-quot-invalid-application-pool-quot-message.aspx 2. 使用Metabase Explorer,没有发现问题。应用程序池的KeyType和Websit的AppPoolID都是正确的 3. 在c:\windows\system32\inetsrv用记事本打开IIS 配置文件meatbase.xml,检查<IIsApplicationPools>和<IIsApplicationPool>部分,发现有如下所示多出一个节点: <IIsApplicationPools Location=”/LM/W3SVC/AppPools” AdminACL=”xx” AppPoolIdentityType=”2″ … StartupTimeLimit=”90″ />   <IIsConfigObject Location=”/LM/W3SVC/AppPools/XXXAppPool121″ /> -<IIsApplicationPool Location=”/LM/W3SVC/AppPools/DefaultAppPool” AppPoolAutoStart=”TRUE” AppPoolIdentityType=”2″ … PeriodicRestartTime=”0″> </IIsApplicationPool>     对比本地的metabase.xml文件,发现在<IIsApplicationPools>和<IIsApplicationPool>之间没有<IIsConfigObject>的部分。 解决方法: 1. 备份metabase.xml。 2. 停止IIS管理服务。 3. 删除meatbase.xml文件中的<IIsConfigObject>部分。 4. 重启IIS管理服务以及HTTP…

0