我正在使用它来获取当前页面的名称。这样返回例如MyPage.aspx
public string GetCurrentPageName() { string urlPath = Request.Url.AbsolutePath; FileInfo fileInfo = new FileInfo(urlPath); string pageName = fileInfo.Name; return pageName; }
解决方法
解释问题的方式是检索当前正在执行的aspx页面的名称(即System.Web.UI.Page)的有效方式。
如果这是真的,你不应该处理任何FileInfo对象或者点击filesytem。只需在页面对象上使用AppRelativeVirtualPath property。
using System; using System.IO; using System.Web.UI; namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender,EventArgs e) { string pageName = Path.GetFileNameWithoutExtension(Page.AppRelativeVirtualPath); } } }
如果您不能获得当前执行页面的完全限定(或“根”)路径,则可以使用Server.MapPath
string path = Server.MapPath(Page.AppRelativeVirtualPath);
使用AppRelativeVirtualPath即使在使用url重写时也可以使用,因为它不使用Request.Url(由用户提供),您无需担心潜在的恶意数据。