有什么区别Server.MapPath()和HostingEnvironment.MapPath()?是否Server.MapPath()有任何优势了HostingEnvironment.MapPath()?
我原来的问题是当服务器上的文件路径HttpContext不存在时映射,我无法将Server变量传递Global.asax给我的方法.
我用HostingEnvironment.MapPath()它代替,因为它不需要HttpContext.有这两种方法会产生不同结果的情况吗?
如何解析相对于ASP.NET MVC 4应用程序的根目录的路径?也就是说,我想从控制器操作中打开属于应用程序的文件,引用方式如下~/Data/data.html.这些路径通常在中指定Web.config.
编辑:
通过'resolve',我的意思是将相对于应用程序根目录的路径转换为绝对路径,.eg ~/Data/data.html→ C:\App\Data\Data.html.
我正在构建一个ASP.NET MVC站点,我计划使用Lucene.Net.我已经设想了一种构建Lucene使用方法的方法,但不确定我的计划架构是否正常且高效.
Application_StartGlobal.asax中的事件:我检查文件系统上的索引的存在-如果不存在的话,我创建并填写与文件从数据库中提取它.IndexWriter,填写一个文档,写入索引,最后处理掉IndexWriter.IndexWriters没有重用,因为我无法想象在ASP.NET MVC应用程序中这样做的好方法.HttpRuntime.Cache用户是否已经在过去5分钟内搜索过该术语 - 如果有,我会返回这些结果; 否则,我创建一个IndexReader,构建并运行一个查询,将结果放入HttpRuntime.Cache,返回给用户,最后处理掉IndexReader.再次,IndexReaders不再重复使用.ASP.NET具有特定的应用程序文件夹,例如App_Code:
包含要作为应用程序的一部分进行编译的共享类和业务对象(例如,.. cs和.vb文件)的源代码.在动态编译的Web站点项目中,ASP.NET会根据对应用程序的初始请求编译App_Code文件夹中的代码.检测到任何更改后,将重新编译此文件夹中的项目.
问题是,我正在构建一个Web应用程序,而不是一个动态编译的Web站点.但是我希望能够直接在C#中存储配置值,而不是通过XML提供服务,并且必须在读取Application_Start和存储期间读入HttpContext.Current.Application
所以我有以下代码/App_Code/Globals.cs:
namespace AppName.Globals
{
public static class Messages
{
public const string CodeNotFound = "The entered code was not found";
}
}
Run Code Online (Sandbox Code Playgroud)
这可能是应用程序中的任何位置,如下所示:
string msg = AppName.Globals.Messages.CodeNotFound;
Run Code Online (Sandbox Code Playgroud)
目标是能够将任何文字存储在可以更新的可配置区域中,而无需重新编译整个应用程序.
我可以.cs通过将其构建操作设置为编译来使用该文件,但这样做会App_Code/Globals.cs从我的输出中删除.
问:有没有办法识别项目的某些部分,这些部分应该动态编译,同时允许项目的其余部分进行预编译?
content- .cs文件将被复制到该bin文件夹并在运行时编译.但是,在这种情况下,它在设计时不可用. compile- 我可以在设计/运行时期间访问与任何其他编译类相同的对象,但在发布时它将被删除/ App_Code文件夹.我仍然可以将它放在输出目录中Copy Always,但是已编译的类似乎优先,所以我不能在不重新部署整个应用程序的情况下推送配置更改.