0

このことは私を怒らせています:

ブラウザのURL------->物理パス

http://somedomain/routeName ----> ~/Default.aspx WORKS

http://somedomain/routeName/anypage.aspx ----> ~/anypage.aspx  WORKS

http://somedomain/routeName/anyfolder ----> ~/anyfolder/Default.aspx DOESNT WORK

http://somedomain/routeName/anyfolder/anypage.aspx ----> ~/anyfolder/anypage.aspx WORKS

ここで、anypage.aspxはaspxページのいずれかです

ここで、anyfolderは任意のパスです

私はこのルートを使用しています:

var sb = new StringBuilder("(");
foreach (Poll item in DataProvider.Get<IPollProvider>().GetAll())
{
    sb.AppendFormat("{0}|", item.Name);
}
sb.Length--;
sb.Append(")");
RouteTable.Routes.MapPageRoute("Alias", "{pollName}/{*url}", "~/{url}", true, new RouteValueDictionary{{"url","~/Default.aspx"}}, new RouteValueDictionary { { "pollName", sb.ToString() } });

これは、MVCではなく、従来のasp.netサイトです。

UrlRoutingModuleがロードされたIIS7統合モード

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
4

1 に答える 1

0

私は方法を発見しました:

ルートの前に追加

RouteTable.Routes.MapPageRoute("Alias", "{pollName}/{*url}", "~/{url}", true, new RouteValueDictionary{{"url","Default.aspx"}}, new RouteValueDictionary { { "pollName", sb.ToString() } });

処理したいすべてのパスのルート:

//for http://somedomain/routeName/admin

RouteTable.Routes.MapPageRoute("AliasAdmin", "{pollName}/Admin/{*url}", "~/Admin/{url}", true, new RouteValueDictionary{{"url","Default.aspx"}}, new RouteValueDictionary { { "pollName", sb.ToString() } });
于 2012-09-27T12:59:17.183 に答える