我有一个托管在亚马逊服务器上的应用程序,它有两个实例,一个用于测试,一个用于生产。
即
在服务器123.456.789.123上,应用程序实例为
- wwwroot / myappuat
- wwwroot / myappprod
所以子域myapp.mydomain.com DNS设置指向服务器123.456.789.123
并且已经为这些实例设置了重写规则,让我们看一下生产
<rule name="myapp.mydomain.com" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^myapp.mydomain.com$" />
</conditions>
<action type="Rewrite" url="\myappprod\{R:0}" />
</rule>
问题在于RedirectToAction的行为与我在开发中测试localhost时的行为方式不同。
例如:
RedirectToAction("Login", "Home")
将重定向到http://myapp.mydomain.com/myappprod/Home/Login而不是预期的http://myapp.mydomain.com/Home/Login
我怀疑我需要修改RegisterRoutes中的路由设置。但我不知道该怎么做。
对此的任何帮助将不胜感激。
答案 0 :(得分:1)
我发现我哪里出错了。
蒂尔达的。
例如,从URL授权到登录页面的重定向如下所示:
<authentication mode="Forms">
<forms loginUrl="~/Home/Login" timeout="2880" />
</authentication>
由于URL已被重写,路径仍包含/ myappprod。 删除tilda修复它
<authentication mode="Forms">
<forms loginUrl="/Home/Login" timeout="2880" />
</authentication>
我在这儿的时候还有一件事。确保使用Url.Content("~/url/here")
而不仅仅是"~/url/here"
。特别是那些tildas。
答案 1 :(得分:0)
尝试将前缀放在global.asax
中的RegisterRoutes方法中e.g。
routes.MapRoute(
"Default", // Route name
"myappprod/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults