Должен ли Server.Transfer () использовать прямую или обратную косую черту? - PullRequest
1 голос
/ 17 апреля 2019
Server.Transfer("~\\Error Pages\\404.aspx");

Так как ~ возвращает путь с обратной косой чертой

Или:

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

Используется и соответствует документам («Путь к URL») more

Я пытался, и они оба работают.

Так почему я спрашиваю?

Потому что, если вы не сделаете что-то правильным способом, это может сработать сейчас, но в какой-то момент может произойти сбой, а затем его будет довольно сложно отладить.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Оба работают, но использование / предпочтительнее, так как \ внутренне получает замену на /.

Из справочного источника .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('\\', '/');

    ...
}
1 голос
/ 17 апреля 2019

Правильный способ использования

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

Пример 1

Пример 2

...