首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ASP.NET中,当HttpContext.Current为NULL时,如何获取physcial文件路径?

在ASP.NET中,当HttpContext.Current为NULL时,可以通过以下方法获取物理文件路径:

代码语言:csharp
复制
string physicalFilePath = System.IO.Path.GetFullPath(@"C:\PhysicalFilePath");

该方法获取操作系统根目录物理路径,并将其转换为字符串返回。如果要从项目中读取或写入文件,则需要在代码中确保物理文件路径与实际文件路径相同。

此外,还可以使用System.Web.HttpContext类方法获取虚拟路径,例如:

代码语言:csharp
复制
string virtualFilePath = HttpContext.Current.Request.Url.ToString();

该方法获取当前的虚拟路径,并将其转换为字符串返回。可以使用此路径来渲染模板或返回JSON响应等。

需要注意的是,在ASP.NET中,物理文件路径和虚拟路径之间存在一些转换和限制。例如,无法在虚拟路径中使用通配符或嵌套路径。因此,在实际应用中,可能需要特别注意路径的表示和处理方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

重提URL Rewrite(3):UR

),这样页面进行PostBack,目标地址就会是URL Rewrite之前的地址了。...这个属性ASP.NET刚接受到IIS传来的请求就确定了,它不会随着接下来BeginRequest的Rewrite操作而改变,因此我们只要为Form的action输出RawUrl就可以解决PostBack...换句话说,IIS把请求交由ASP.NET引擎处理的时候,ASP.NET从IIS那里获得的信息已经是URL Rewrite之后的地址了(例如/User.aspx?...不过“真没办法”四个字是有条件的,完整地说应该是:“靠ASP.NET自身”的确“真没办法”了。不过如果IIS进行URL Rewrite的时候帮我们一把,那么情况又会如何呢?...现在我们就可以ASP.NET获取到这个值了,于是我们将之前的Control Adapter代码的WriteAttribute方法作如下修改: public override void WriteAttribute

73620

asp.net MVC 应用程序的生命周期

我们来看看这19个事件: 应用程序按照以下顺序执行由 global.asax 文件定义的模块或用户代码处理的事件: 事件名称: 简单描述: BeginRequest ASP.NET 响应请求作为...预订PostAuthorizeRequest 事件可确保处理附加的模块或处理程序之前对请求进行身份验证和授权 ResolveRequestCache ASP.NET 完成授权事件以使缓存模块从缓存请求提供服务发生...AcquireRequestState ASP.NET 获取与当前请求关联的当前状态(如会话状态)发生。...LogRequest ASP.NET 完成缓存模块的更新并存储了用于从缓存后续请求提供服务的响应后,发生此事件。...Asp.Net Routing属于全局性的,所以它配置全局Web.Config ,我们可以如下路径中找到:“C\Windows\Microsoft.NET\Framework\版本号\Config

1.3K10

asp.net MVC 应用程序的生命周期

我们来看看这19个事件: 应用程序按照以下顺序执行由 global.asax 文件定义的模块或用户代码处理的事件: 事件名称: 简单描述: BeginRequest ASP.NET 响应请求作为...预订PostAuthorizeRequest 事件可确保处理附加的模块或处理程序之前对请求进行身份验证和授权 ResolveRequestCache ASP.NET 完成授权事件以使缓存模块从缓存请求提供服务发生...AcquireRequestState ASP.NET 获取与当前请求关联的当前状态(如会话状态)发生。...LogRequest ASP.NET 完成缓存模块的更新并存储了用于从缓存后续请求提供服务的响应后,发生此事件。...Asp.Net Routing属于全局性的,所以它配置全局Web.Config ,我们可以如下路径中找到:“C\Windows\Microsoft.NET\Framework\版本号\Config

1.8K90

asp.net MVC 应用程序的生命周期

我们来看看这19个事件: 应用程序按照以下顺序执行由 global.asax 文件定义的模块或用户代码处理的事件: 事件名称: 简单描述: BeginRequest ASP.NET 响应请求作为...预订PostAuthorizeRequest 事件可确保处理附加的模块或处理程序之前对请求进行身份验证和授权 ResolveRequestCache ASP.NET 完成授权事件以使缓存模块从缓存请求提供服务发生...AcquireRequestState ASP.NET 获取与当前请求关联的当前状态(如会话状态)发生。...LogRequest ASP.NET 完成缓存模块的更新并存储了用于从缓存后续请求提供服务的响应后,发生此事件。...Asp.Net Routing属于全局性的,所以它配置全局Web.Config ,我们可以如下路径中找到:“C\Windows\Microsoft.NET\Framework\版本号\Config

1.6K30

ASP.NET MVC 中使用异步控制器

同时处理多个长时间运行的请求的大型应用程序,可能会阻塞所有可用的线程。 这种情况称为“线程不足”。 出现这种情况,Web 服务器会将请求排队。...但是,异步调用的过程,服务器等待第一个请求完成的过程不会阻塞对其他请求的响应。 因此,有许多请求调用长时间运行的操作,异步请求可以防止出现请求排队的情况。...异步操作完成通知 ASP.NET。 Web 服务器从线程池获取一个线程(可能是与启动异步操作的线程不同的线程)以处理请求的其余部分,包括呈现响应。 下图显示了异步模式。... OutstandingOperations 属性ASP.NET 可通过调用 NewsCompleted 方法来完成整个异步操作。...在此情况下,HttpContext.Current 将为 null,并且当应用程序访问 AsyncManager 类的成员(例如 Parameters)可能会出现争用条件。

1.9K110

多线程下的调用上下文 : CallContext

.NET Framework,Microsoft给我们设计了一个CallContext类。... CallContext 沿执行代码路径往返传播并且由该路径的各个对象检查,可将对象添加到其中。 简而言之,CallContext提供线程(多线程/单线程)代码执行路径数据传递的能力。...But,鉴于目前广泛使用线程池的前提,线程处理完一个请求之后,并没有被销毁,存储CallContext的上下文对象也一直存在,如果是下一次拿出这个线程去处理另一个请求,这个上下文对象其实也不断的膨胀...这时,或许我们可以考虑另一个方案,ASP.NET的HttpContext中有一个Items属性,它也可以用来保存key-value,这就完美了,一次请求正好对应着一个HttpContext,请求结束...所以,我们可以在任何地方访问HttpContext.Current获取到与当前请求相关的HttpContext对象,毕竟这些代码是由同一个线程来执行的嘛,所以得到的HttpContext引用也就是那个与请求相关的对象

86420

ASP.NET的路由系统:根据路由规则生成URL

前面我们已经提到过,ASP.NET 的路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一个相应的URL。...另一个GetVirtualPath方法具有一个额外的字符串参数name,它表示集合具体使用的路由对象的注册名称(调用MapPageRoute方法指定的第一个参数)。...同样以之前定义关于获取天气信息的URL模板例,下面是路由注册代码。...;第二次则指定了一个手工创建的RequestContext对象,其RouteData的Values属性具有两个变量(areaCode=0512;days=1),而values参数依然Null;第三次我们同时参数...ASP.NET的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL

1.3K80

分布式中使用Redis实现Session共享(二)

Cookie 是一小段文本信息,伴随着用户请求和页面 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点 Web 应用程序都可以读取的信息。...那么问题来了,为什么Defaule.aspx.cs文件里可以获取到这个Session对象,这个Session对象又是什么时候被初始化的呢。  ...HttpContext得从ASP.NET管道说起,以IIS 6.0例,工作进程w3wp.exe,利用Aspnet_ispai.dll加载.NET运行时(如果.NET运行时尚未加载)。...IsapiRuntime定义程序集System.Web,对应的命名空间System.Web.Hosting。IsapiRuntime会接管该HTTP请求。...状态服务全称是“ASP.NET State Service ”(aspnet_state.exe)。它由Web.config文件的stateConnectionString属性来配置。

1.7K60

.net上传文件,大文件及下载方式汇总(转)

上的资源   第一部分:   首先我们来说一下如何解决ASP.net文件上传大小限制的问题,我们知道默认情况下ASP.NET文件上传大小限制为2M,一般情况下,可以采用更改web.config...,他包含的配置信息对该目录和目录下的子目录起作用 (1)修改web.config文件 web.config文件添加配置可以自定义上传文件的大小限制.添加的设置代码如下...上面的代码executionTimeout属性用于指定上传操作的有效时间(单位秒). maxRequestLength属性用于指定上传文件的最大字节数,单位KB,此属性默认大小4096K(4MB)....第二部分:   下面我们来介绍如何文件形式将客户端的一个文件上传到服务器并返回上传文件的一些基本信息。   首先我们定义一个类,用来存储上传的文件的信息(返回需要)。...;  }  //返回上传文件的信息  return fp; }   然后我们在上传文件的时候就可以调用这个方法了,将返回的文件信息保存到数据库,至于下载,就直接打开那个路径就OK了。

91720

ASP.NET 2.0 的异步页

ASP.NET 接收针对页的请求,它从线程池中提取一个线程并将请求分配给该线程。一个普通的(或同步的)页该请求期间保留线程,从而防止该线程用于处理其他请求。...图 2 说明 ASP.NET 2.0 同步和异步页之间的区别。请求同步页ASP.NET 该请求分配线程池中的一个线程,并在该线程上执行页。...Begin 启动一个异步 I/O 操作,该操作完成ASP.NET 从线程池提取另一个线程并调用 End 方法,并且该线程上执行该页生命周期的其余部分。 ?...调用完成,EndAsyncOperation 调用 SqlCommand.EndExecuteReader 以获取 SqlDataReader,然后将其存储私有字段。...相应的 .aspx 文件包括一个将超时间隔设置 5 秒的 AsyncTimeout 属性。

1.9K90

记录用户在线时间

正文                                      思路:页面加载和卸载的把当前时刻发送到服务器,服务器端用链表保存并且该链表保存在Session,但Session过期检索该链表获取最小和最大值并相减...源代码下载 源代码使用说明:Global.asax的Session_End方法设断点,使用调试模式启动就可以看到结果值。...不料原来Session_End获取不料HttpContext.Current。...具体原因是:Session_End事件是由服务器内部激发的事件处理函数,由服务器的内部计时器启动,这时服务器没有接收到相关的请求就没有进入管道模型中生成HttpContext对象,所以无法获取HttpContext.Current...参考:http://www.cnblogs.com/cnxcfeng/articles/1189171.html 注意:因Session是保存在Asp.net进程的AppDomain进程结束或崩溃时会触发

1.2K90

ASP.NET MVC是如何运行的: URL路由

一个ASP.NET MVC应用来说,针对HTTP请求的处理和相应定义Controller类型的某个Action方法,每个HTTP请求的目标对象不再像ASP .NET Web Form应用一样是一个物理文件...我们自定义的ASP.NET MVC框架,路由数据通过具有如下定义的RouteData类型表示。...实现的GetRouteData方法,通过HttpContextBase获取相对请求地址,如果该地址与定义模板的URL模式相匹配则创建一个RouteData返回;否则返回Null。...我们自定义ASP.NET MVC框架,路由表通过类型RouteTable表示。...ASP.NET MVC是如何运行的[1]: 建立“伪”MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller

1.7K60

让Response.Redirect页面重定向更有效率

= null) { context.ApplicationInstance.CompleteRequest();...} } } 另外ASP.NET 4 增加了一个RedirectPermanent方法,该方法同样是重定向,但生成的HTTP响应状态不是上边所演示的302,而是301(永久跳转...你有个网站http://www.cnblogs.com ,人们访问http://www.cnblogs.com 这个URL,你就把他们重定向到http://www.cnblogs.com/shanyou.../,那么搜索引擎爬到http:www.cnblogs.com这个网址,如果它不能很好地跟随重定向,则它将认为http://www.cnblogs.com页面没有内容的,所以这个页面的排名将会非常靠后...如果我们把一个地址采用301 跳转方式跳转的话,搜索引擎会把老地址的PageRank等信息带到新地址,同时搜索引擎索引库彻底废弃掉原先的老地址。

1.3K60
领券