Lucene.Net fails at my host because it calls GetTempPath(). What's the work around?

后端 未结 1 389
既然无缘
既然无缘 2021-01-07 03:39

I\'m using Lucene.Net in an ASP.NET application on a shared host. Got this stack trace shown below. What\'s the work around?

[SecurityException: Request for the

相关标签:
1条回答
  • 2021-01-07 03:58

    Here's the answer to my own question. The solution was to modify Lucene.Net.Store.FSDirectory, by commenting out this unused line:

    // Comments out by Corey Trager, Oct 2008 to workaround permission restrictions at shared host.  This is not used.
    //        public static readonly System.String LOCK_DIR = SupportClass.AppSettings.Get("Lucene.Net.lockDir", System.IO.Path.GetTempPath());
    

    There was one more security permission hurdle after that, and here's that workaround too. I don't understand why one way of getting the names of files in a directory would be blocked, and another way not blocked.

        public override System.String[] List()
        {
    
    /* Changes by Corey Trager, Oct 2008, to workaround permission restrictions at shared host */
                System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(directory.FullName);
                System.IO.FileInfo[] files = dir.GetFiles();
                string[] list = new string[files.Length];
                for (int i = 0; i < files.Length; i++)
                {
                    list[i] = files[i].Name;
                }
                return list;
    /* end of changes */
    
    //            System.String[] files = SupportClass.FileSupport.GetLuceneIndexFiles(directory.FullName, IndexFileNameFilter.GetFilter());
    //            for (int i = 0; i < files.Length; i++)
    //            {
    //                System.IO.FileInfo fi = new System.IO.FileInfo(files[i]);
    //                files[i] = fi.Name;
    //            }
    //            return files;
            }
    
    0 讨论(0)
提交回复
热议问题