你目前正处于脱机状态,正在等待 Internet 重新连接

FIX:"访问被拒绝"错误消息,当您试图从 ASP.NET 访问索引服务,与启用模拟

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 323293
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
症状
当您对索引服务器搜索通过 ASP.NET 页时,您可能会收到以下错误消息:
访问被拒绝。 描述: 在当前 web 请求的执行过程中发生了未处理的异常。请查看堆栈跟踪以确定有关错误以及来源于代码中的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: 访问被拒绝。
仅当您启用模拟,ASP.NET Web 应用程序和安全上下文运行 ASP.NET 工作进程 (Aspnet_wp.exe) 是否为 ASPNET 帐户,会出现此行为。
解决方案

服务包信息

若要解决此问题,获得最新的 service pack,对于 Microsoft Windows 2000。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
260910如何获取最新的 Windows 2000 service pack
替代方法
使用下列方法之一来解决此问题:
  • 禁用模拟整个 ASP.NET Web 应用程序。这是默认设置。
  • 禁用模拟只为特定的.aspx 页的索引服务器搜索。将为此 <location>标记添加到 Web.config 文件,如下所示:
    <location path="filename.aspx"><system.web>   <identity impersonate="false" /></system.web></location>					
如果这些变通办法不接受您,您可以更改到系统帐户运行 ASP.NET 工作进程的安全上下文。但是,Microsoft 不建议您将 ASP.NET 辅助进程的安全上下文都设置为 SYSTEM 帐户,因为系统帐户是高度特权的管理员帐户在 Web 服务器计算机上。如果其他解决方法都不接受,请使用 $ 此变通办法

若要将在其下运行 ASP.NET 工作进程的安全上下文将 用户名 属性设置为 SYSTEM,然后将 密码 属性设置为 自动生成<processmodel>中 Machine.config 文件的节。Machine.config 文件位于 C:\ Windows Directory \Microsoft.Net\Framework\v1.0.3705\Config 文件夹中。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的错误。此 bug 已被更正中 (包含在.net 框架中) 的 ASP.NET 1.1。 Microsoft 已经确认这是 Microsoft Windows 2000 中的问题。 在 Microsoft Windows 2000 Service Pack 4 中,第一次已得到纠正此问题。
更多信息

重现行为的步骤

  1. 启动 Microsoft Visual Studio.net。
  2. 创建 ASP.NET Web 应用程序。
  3. 在.aspx 页的 HTML 中添加以下代码:
    <%@ Page language="c#" %><%            System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("provider=msidxs;");            conn.Open();            string Sql = "Select DocTitle, vpath, characterization, rank from Scope(' DEEP TRAVERSAL OF \"C:\\\" ')  where FREETEXT(' \"ticket\" ') order by rank desc";            System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(Sql, conn);            System.Data.DataSet ds = new System.Data.DataSet();            da.Fill(ds, "SearchResults");            Response.Write("Search Results: <br>");            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)            {                        Response.Write("<br>" + ds.Tables[0].Rows[i]["vpath"].ToString());            }%>					
  4. 修改 Web.config 文件启用模拟,如下所示:
    <identity impersonate="true" />					
  5. 请确保 Aspnet_wp.exe 工作进程运行的安全上下文 ASPNET 帐户。若要执行此操作将 用户名 属性设置为 计算机,然后将 密码 属性设置为 自动生成<processmodel>中 Machine.config 文件的节。

    注意默认状态下,ASP.NET 辅助进程设置为在受限制的 ASPNET 帐户的安全上下文下运行。
  6. 您的计算机上启动索引服务。
  7. 生成了的应用程序,然后在浏览器中打开.aspx 页。请注意您将收到"症状"部分中列出的错误消息。
参考
有关在 ASP.NET 中的模拟的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306158如何在 ASP.NET 应用程序中实现模拟
有关 ASP.NET 工作进程标识的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
317012在 ASP.NET 中的过程和请求身份

警告:本文已自动翻译

属性

文章 ID:323293 - 上次审阅时间:07/05/2006 15:50:24 - 修订版本: 3.1

Microsoft ASP.NET 1.0, Microsoft Index Server 2.0, Microsoft OLE DB Provider for Index Server 3.0

  • kbmt kbhotfixserver kbqfe kbwin2ksp4fix kbother kbfix kbbug kbconfig kbnofix kbsecurity KB323293 KbMtzh
反馈