【问题标题】:Is it possible Server.MapPath anywhere else bau in the page class?页面类中的其他任何地方都可能有 Server.MapPath 吗?
【发布时间】:2011-08-18 03:42:24
【问题描述】:

我现在已经在 3 页上使用了名为 CheckIfImageExiste(string virtualPath, string finename) 的相同方法,因为该方法包含方法 Server.MapPath。 p>

该方法应该接收虚拟路径和图像文件的名称,并检查图像是否在正确的文件夹中。所以当方法接收到参数时,需要将其转化为物理路径。

在后面的代码中,我可以执行以下操作:

string physicalPath = Server.MapPath(virtualPath);

但是,如果我决定将 CheckIfImageExiste() 移动到另一个类以便它可以被所有 3 个类共享,我该如何定义 Server.MapPath(virtualPath) 在新班级?我的意思是,参考是什么?

感谢您的帮助

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    HttpContext.Current.Server.MapPath

    【讨论】:

    • 当我使用 HttpContext.Current.Server.MapPath 时,只显示了 4 个方法:Equals、ReferenceEquals、UrlTokenEncode 和 UrlTokenDecode。当我这样做时:HttpServerUtility server = new HttpServerUtility(),intellisense 对我使用 MapPath() 方法。然后它抱怨没有 HttpServerUtility 的构造函数。我只是不明白。
    【解决方案2】:

    HttpServerUtility 应该可用:

    http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.aspx

    ...或者您可以将新函数的引用传递给页面本身。

    【讨论】:

    • 我将页面的引用传递给该方法,它运行良好。但我仍然需要知道如何使用 HttpServerUtility。 (看看我写给 BJ Sadie 的内容)
    • 我对它没有构造函数的错误感到困惑,但我可以理解为什么它会抱怨 - 没有 HttpContext,服务器实用程序没有多大用处。它具有处理虚拟目录等的智能。在这种情况下,如果您不想访问 HttpContext,我不知道您将如何避免传递对页面或服务器本身的引用。我已经初始化如下,没有问题: HttpServerUtility oSrvr = HttpContext.Current.Server; ...只要您保证从网站执行此操作,我认为您会没事的。
    • 现在,我能够从我的新类中执行相同的方法。字符串物理路径 = HttpContext.Current.Server.MapPath(virtualPath)。谢谢
    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 2020-02-24
    • 2013-03-04
    • 2010-10-07
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多