Server.Transfer()应该使用正斜杠还是反斜杠?

时间:2019-04-17 19:51:56

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

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

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

或者:

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

Seen进一步使用并适合docs(“ URL路径”)

我尝试过,它们都可以工作。

那我为什么要问?

因为如果您不按照正确的的方式进行操作,它可能会立即运行,但可能会在某些时候失败,因此调试起来会非常困难。

2 个答案:

答案 0 :(得分:1)

正确的使用方法是

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

Example 1

Example 2

答案 1 :(得分: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('\\', '/');

    ...
}