【问题标题】:Should Server.Transfer() use forward slashes or backslashes?Server.Transfer() 应该使用正斜杠还是反斜杠?
【发布时间】:2019-04-17 19:51:56
【问题描述】:
Server.Transfer("~\\Error Pages\\404.aspx");

因为 ~ 返回带有反斜杠的路径

或者:

Server.Transfer("~/Error Pages/404.aspx");

已使用并适合docs(“URL 路径”)更多

我试过了,它们都有效。

那我为什么要问呢?

因为如果你没有以正确的方式做某事,它现在可能会工作,但它可能会在某个时候失败,然后很难调试。

【问题讨论】:

标签: c# asp.net .net web-applications


【解决方案1】:

两者都可以,但首选使用/,因为\ 在内部会被/ 替换。

来自 .NET 参考来源:

HttpServerUtility.Transfer 调用其使用的Execute 方法
VirtualPath virtualPath = VirtualPath.Create(path);

VirtualPath.Create 调用UrlPath.FixVirtualPathSlashes(virtualPath)\ 替换为/

internal static String FixVirtualPathSlashes(string virtualPath) 
{ 
    // Make sure we don't have any back slashes
    virtualPath = virtualPath.Replace('\\', '/');

    ...
}

【讨论】:

    【解决方案2】:

    正确的使用方法是

    Server.Transfer("~/Error Pages/404.aspx");
    

    Example 1

    Example 2

    【讨论】:

    • 值得一票,所以+1。但是,第一个只是第 3 方,这可能是错误的。至于第二个。它已经过时了。 current docs 不包含示例。我什至不确定您的链接是否用于完全相同的内容。但正如我所说。不过+1。谢谢。
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多