【发布时间】:2017-06-20 07:49:16
【问题描述】:
我有一个网站,它在我的本地计算机上运行良好。
然后我上传到服务器上测试,但是我用AJAX调用的表面控制器无法路由,返回404状态。
我的服务器是Windows Server 2016 Datacenter,IIS版本是10。
我的电脑是 Windows 10.....
谢谢~
【问题讨论】:
-
你能显示代码吗?您是否使用正确的域调用它?
我有一个网站,它在我的本地计算机上运行良好。
然后我上传到服务器上测试,但是我用AJAX调用的表面控制器无法路由,返回404状态。
我的服务器是Windows Server 2016 Datacenter,IIS版本是10。
我的电脑是 Windows 10.....
谢谢~
【问题讨论】:
我找到了解决方案,但答案有点奇怪。 首先,我试过了:
将我的控制器命名空间从 [UmbracoProjectname].Controllers 重命名为 Controllers(见 SO 另一篇文章)
使 web.config 在生产环境中与其工作的本地服务器相同
使用我的控制器路径更新 umbracoReservedPaths
我现在忘记了很多其他东西
解决办法是这样的:
而不是调用
https://domain.tld/umbraco/Surface/CustomSurface/test
我是这样称呼它的:
https://domain.tld//umbraco/Surface/CustomSurface/test
(注意域后的两个斜杠)
所以我猜这是一些路由问题,我用这种方式解决了它。希望它会帮助别人。
【讨论】:
您的实时(服务器)站点是否可能具有不同的根 URL? 也许您的本地是http://localhost/controller,但您上传的实时站点可能是http://www.myserver.com/myapp/controller
在这种情况下,您需要检查您是否使用 /controller 引用 URL - 您可能需要引入一个设置来指示您网站的根 URL(然后您可以为每个环境设置不同的设置值)。
【讨论】: