2014-09-01 66 views
0

我有一个将MVC路径路由到aspx页面的奇怪问题。除了一些罕见的情况之外,这一切都可以找到。其实这并不罕见,因为这个月发生了两次。MVC当子域文本也是路由的一部分时,页面路由替换子域的一部分

所以我们已经有了旧的aspx页面,但我们需要有更友好的URL。这是背景,无法避免,因为我不会去。

所以我有一个页面〜/ MySubFolder/Plans.aspx

我们需要的URL为〜/事/计划

,所以我必须在航线配置页面路线

routes.MapPageRoute("Tickets", "Things/Plans", "~/MySubFolder/Plans.aspx"); 

这在大多数情况下都能正常工作。

该应用程序是SaaS产品,我们根据他们使用的网址确定上下文中的租户。因此,每个租户都会在我们的应用上获得子域名,例如http://clienta.ourapp.com

所以这就是问题所在。

我们有一个客户注册和他们选择了自己的子域名是http://plans.ourapp.com

客户端没有除了当他们试图访问我们的路径〜/事/计划的任何问题。当他们这样做时,我们会得到一个错误。这是我们自己的例外之一,它发生是因为在每次请求时,我们通过查看子域来确定租户是谁。

由于某些原因,当我们检查域名路由时已经剥离了子域名的计划部分,并且是http:// .ourapp.com而不是http://plans.ourapp.com

因此,这显然是由一个事实,即字计划是子域和计划引起也是路线事情结束/ 计划

我们需要以某种方式避免这种情况发生,也许路线没有正确设置,或者它只是一个错误,但很好找出为什么会发生这种情况,所以我们可以修复它。

谢谢

回答

0

原来这与路由URL没有任何关系。在代码中的其他地方,我们尝试评估当前租户URL,因为某些原因,我们基于URL的另一部分替换了部分URL,而URL的另一部分是某些情况下的问题。难怪没有人对此做出回答