Почему URL не переписывает работу? - PullRequest
2 голосов
/ 26 ноября 2008

В asp.net 3.5 я переписываю URL

http://www.abc.com/archive/1108/harpersdecember

до следующего

http://www.abc.com/article.aspx?docId=78

Я использую этот код для этого:

                Context.RewritePath("/article.aspx?docId=78");

Локально работает, но когда я загружаю на удаленный веб-сервер, я получаю 404 при попытке обратиться к вышеупомянутой странице Любые предложения, почему это работает локально, но не удаленно?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2008

Может потребоваться создать сопоставление с подстановочными знаками в IIS на удаленном сервере, чтобы все запросы обрабатывались ASP.Net. Если вы не сделаете этого, любые URL-адреса без .ASPX в конце не будут проходить через ваш код перезаписи URL.

Это хорошее объяснение (и другие причины, по которым вы можете его использовать) есть в блоге Скотта Гатри .

1 голос
/ 26 ноября 2008

Не «может» - вам определенно нужно создать маску. Visual Studio использует веб-сервер cassini, который по существу передает все запросы через .net. IIS только перенаправляет определенные сопоставленные запросы (по умолчанию .aspx, .asmx и т. Д.) В .net - перезапись URL-адреса в asp.net требует добавления нового сопоставления, чтобы сначала получить запрос к asp.net

0 голосов
/ 04 декабря 2008

Похоже, что на производственном сервере нет страницы aspx по умолчанию, то есть default.aspx. Если это так, он перенаправит запрос вашему обработчику.

Простой способ проверить это - создать каталог и поместить в него файл default.aspx и попытаться запросить его, используя только имя dir, то есть: server.com/newdir/ Если это дает вам 404, то вы точно это знаете.

...