【问题标题】:Using Server.MapPath() inside a static field in ASP.NET MVC在 ASP.NET MVC 的静态字段中使用 Server.MapPath()
【发布时间】:2011-04-17 07:05:36
【问题描述】:

我正在构建一个 ASP.NET MVC 站点,我在其中使用 Lucene.Net 进行搜索查询。我 asked a question here 关于如何在 ASP.NET MVC 应用程序中正确构建 Lucene.Net 使用,并被告知最好的方法是将我的 IndexWriter 声明为 public static,以便它可以重复使用。

这是我的 SearchController 顶部的一些代码:

public static string IndexLocation = Server.MapPath("~/lucene");
public static Lucene.Net.Analysis.Standard.StandardAnalyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer();
public static IndexWriter writer = new IndexWriter(IndexLocation,analyzer);

由于writer 是静态的,IndexLocation 也必须是静态的。因此,编译器给我Server.MapPath() 的以下错误:

非静态字段、方法或属性“System.Web.Mvc.Controller.Server.get”需要对象引用

是否有使用 Server.MapPath() 或静态字段的类似方法?我该如何解决这个错误?

【问题讨论】:

    标签: c# asp.net-mvc static lucene.net server.mappath


    【解决方案1】:

    试试HostingEnvironment.MapPath,即static

    请参阅此 SO 问题以确认 HostingEnvironment.MapPath 返回与 Server.MapPath 相同的值:What is the difference between Server.MapPath and HostingEnvironment.MapPath?

    【讨论】:

    • 这个函数给了我一个错误,因为HostingEnvironment.MapPath返回的结果与Server.MapPath不同,后者返回的是绝对url而不是相对url
    • @john,我得到了相同的值。
    【解决方案2】:

    我想你可以试试这个从课堂上调用

     System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
    

    *----------------对不起,我疏忽了,静态函数已经回答了问题 by adrift*

    System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
    

    更新

    我在使用System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");时遇到异常

    Ex 详细信息:System.ArgumentException:此处不允许使用相对虚拟路径“SignatureImages”。在 System.Web.VirtualPath.FailIfRelativePath()

    解决方案(在静态网络方法中测试)

    System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/"); 工作过

    【讨论】:

    • 我唯一一次看到您在更新中提到的错误是代码使用了相对虚拟路径。例如,Server.MapPath() 允许路径为“files/file1.doc”。例如,它使用当前上下文来确定当前页面的路径,然后从那里创建相对路径。如果我们在~/Subfolder/Page1.aspx 中,则url 将从~/Subfolder/files/file1.doc 映射。 HostingEnviornment.MapPath() 是静态的,因此始终需要完整的虚拟路径,从 url 的 ~/ 部分开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多