.NET 1.1 DLL网站访问问题(NON-ADMINS拒绝访问)

时间:2009-07-22 14:15:40

标签: iis dll active-directory permissions .net-1.1

我们正在使用dtSearch的ASP.NET 1.1版本,并且遇到影响我们的用户使用Active Directory(AD)进行身份验证的问题。此问题还影响到同一网站中的另一个自定义内部.NET 1.1 DLL。

当标准用户在一段时间不活动后点击搜索时,该网站将给出以下错误。在服务器管理员点击搜索页面后,它可以工作 - 这是一个奇怪的部分 - 然后最终用户可以点击搜索页面并运行查询。你知道造成这个错误的原因吗?

我们正在使用dtSearch 7.61(Build 7769)和.NET 1.1 dll。索引和网站位于同一台服务器上。

对于自定义DLL,会发生同样的事情。管理员必须在最终用户之前点击网页。

DLL是站点的本地DLL - 它们不在GAC中。我们在Windows Server 2003上。用户使用AD进行身份验证。

感谢您的帮助,

德克

-----原始信息----- 发送时间:2009年7月22日星期三上午8:13 主题:Extranet意外错误

用户访问外联网时发生错误。详情如下:

*应用程序名称:xxxxappnamexxxx

*错误时间:7/22/2009 8:12:54 AM

*错误类型:System.IO.FileLoadException

*错误消息:访问被拒绝:'dtSearchNetApi'。

*堆栈跟踪:    在SearchControls.SearchDAL.GetIndexId(String indexedDocumentPath)    在SearchControls.SearchDAL.GetAvailableDocuments(String areaName,Int32 crossArea,Int32 active,String categoryID)    在SearchControls.SearchDAL.Search(String areaName,Int32 crossArea,Int32 active,String categoryID,String strCriteria,Int32& TotalRowCount)    在SearchControls.SearchResults.SearchResult()    在SearchControls.SearchResults.Render(HtmlTextWriter输出)    在System.Web.UI.Control.RenderControl(HtmlTextWriter writer)    在System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)    在System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter编写器)    在System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter输出)    在System.Web.UI.Control.RenderControl(HtmlTextWriter writer)    在System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)    在System.Web.UI.Control.Render(HtmlTextWriter编写器)    在System.Web.UI.Control.RenderControl(HtmlTextWriter writer)    在System.Web.UI.Page.ProcessRequestMain()

*网址变量:http://xxxxxsitenamexxxxxx/Search.aspx?areaName=matter&crossArea=0&active=0&categoryid=b9de78ae-3085-4ee2-9372-9150b7289455&sCriteria=first修正

*表单变量:

*错误来源:SearchControls

* Error TargetSite:Int32 GetIndexId(System.String)

*登录用户:xxxdomainxxx \ xxxxxusernamexxxxxx

*用户IP:xxxxxxxxxxxxx

*模板路径:/Search.aspx

2 个答案:

答案 0 :(得分:1)

您是否正在运行反病毒或任何类型的搜索索引器?已知一些此类应用程序可以保留DLL。

答案 1 :(得分:1)

您是否尝试运行Process Monitor以查看正在访问的程序集的线程标识?如果您使用Windows身份验证,则会尝试以实际用户身份访问资源。如果您的文件系统没有相应的权限设置,则可能导致拒绝访问。

只是一个虽然....虽然我不能肯定地说我怀疑可能有一个进程调用Assembly.Load并且它无法以用户身份命中程序集。当管理员访问它时,会将asembly加载到AppDomain中并为其他用户进行缓存。