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

文章翻译 文章翻译
文章编号: 323293 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

当您对索引服务器搜索通过 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 中的过程和请求身份

属性

文章编号: 323293 - 最后修改: 2006年7月5日 - 修订: 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
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 323293
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com