簡體   English   中英

iis控制台應用程序目錄條目搜索結果

[英]iis console application directoryentry searchresult

在Windows 2012 R2上的IIS中將控制台應用程序作為CGI運行。

使用DirectoryEntry連接到Active Directory(AD)時,請參考:lccDEDirectoryEntry = new DirectoryEntry(lccSmainConnectionString,lccSUserId,lccSUserPassword,lccATAuthTypes);

然后使用DirectorySearcher,請參考:lccDSSearcher = new DirectorySearcher(lccDEDirectoryEntry);

然后找到所有匹配的對象,請參見:lccSRCResults = lccDSSearcher.FindAll();

然后最終訪問搜索結果,請參考:foreach(lccSRCResults中的SearchResult lccSRResultLoop)

一切正常,直到我嘗試訪問搜索結果之前,它都會引發“路徑中的非法字符”。

我可以在命令窗口中直接在托管IIS的服務器上運行相同的控制台應用程序,它可以正常工作,包括訪問/顯示SearchResults。 在Windows 7工作站/等上也可以正常工作。

一年前,我通過調用HttpUtility遇到了同一類型的問題,但最終成為IIS中的一個錯誤,正在該錯誤中尋找配置設置為null。 Microsoft提供了使用此行的修補程序:AppDomain.CurrentDomain.SetData(“ APP_CONFIG_FILE”,Environment.CurrentDirectory +“ \\” + System.AppDomain.CurrentDomain.FriendlyName +“ .config”);

在此博客頁面上: http : //www.dreamincode.net/forums/topic/300197-webrequest-in-a-cgi

一年前,這解決了空配置設置,因為當您運行HttpUtility時,IIS查找一個“ APP_CONFIG_FILE”設置,該設置在作為控制台應用程序運行時未設置並且未被使用。

好吧,我的調試/等。 已經顯示出遇到相同的問題,即設置為null,因此“ CheckIllegalCharacters”函數不會崩潰,因為它無法解析null值。

不幸的是,我找不到所需的設置。 我什至列舉了所有AppSetting鍵,例如: https ://msdn.microsoft.com/zh-cn/library/system.appdomain.getdata%28v=vs.110%29.aspx?f = 255&MSPPError = -2147217396

並讓我的代碼用一個虛擬值填充每個代碼,但是不行。

關於如何找到丟失的設置鍵名稱的任何線索? 還是其他解決方案?

這是堆棧跟蹤。 最下面的是我的函數“ lccLDAP”,它通過調用SearchResults循環來初始化其余的函數。

System.Security.Permissions.FileIOPermission.CheckIllegalCharacters(String [] str,Boolean onlyCheckExtras)處的STACK TRACE,位於System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess訪問,AccessControlActions控件,String [] pathListOrig,布爾值checkForDuplicates,布爾值needFullPath,布爾值System.Security.Permissions.FileIOPermission..ctor處的copyPathList).ctor(System.Configuration.ClientConfigPaths.SetNamesAndVersion(String applicationFilename,Assembly exeAssembly,Boolean isHttp)處的System.Reflection.RuntimeModule.get_FullyQualifiedName()處的FileIOPermission.ctor(FileIOPermissionAccess訪問,字符串路徑) .Configuration.ClientConfigPaths..ctor(System.Configuration.ClientConfigPaths.GetPaths(String exePath,Boolean includeUserConfig)在System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord記錄)在System.Configuration.BaseConfigurationRecord.GetSectionRecursive(字符串configKey,布爾 getLkg,Boolean checkPermission,Boolean getRuntimeObject,Boolean requestIsHere,Object&result,Object&resultRuntimeObject在System.Configuration.ConfigurationManager.GetSection(String configKey)在System.Configuration.ConfigurationManager.GetSection(String sectionName)在System.Configuration.PrivilegedConfigurationManager.GetSection( System.DirectoryServices.SearchResultCollection.ResultsEnumerator..ctor處的String sectionName)(System.DirectoryServices.SearchResultCollection.get_InnerList()處System.DirectoryServices.SearchResultCollection.get_Item(Int32 index)處的SearchResultCollection results,String parentUserName,String parentPassword,AuthenticationTypes parentAuthenticationType) lccCoreFunctionsClass.lccLDAP(lccSettingsClass lccParamSCSettings,Int32 lccLDAPId,Int32 lccIFlag,字符串lccSParam)

加上我終於做了。 由於我的控制台應用程序在IIS服務器上運行良好,而不是通過IIS for Directory.SearchResults運行,因此我將程序拆分為以前端和后端模式運行。 前端服務器IIS網頁,並將請求傳遞給后端以執行LDAP任務。 然后,后端為前端提供響應。 無論如何,良好的三層安全性。 以防萬一其他人尋找可能的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM