为什么我的window.location.href = ('/MbsaExercise/MobileExerciseDescriptionMaint?mode=Init');
在我的mvc visual studio 2017 iis网站上工作,但当我尝试从我的手机上访问我的开发桌面时从iis默认网站应用程序访问同一项目时,我得到404手机进行开发测试?
看起来当我用(无斜线)('/MbsaExercise
替换('MbsaExercise
或用(点)('/MbsaExercise
替换('./MbsaExercise
时,页面成功调出。
我想到了网址重写,但是,在查看我的代码后,我看到其他情况,我正在构建一个网址,似乎我必须找到一种方法来重写这些网址。
在环顾四周之后,似乎我需要使用url重写来处理这个问题,但这是我唯一的选择吗?还有其他我可以考虑的事情吗?喜欢某种方式使用ISAPI过滤器。我不明白为什么Visual Studio 2017的调试可以使用这个window.location.href情况,但是在这种开发模式下,dosnt可以在我的手机上运行。此外,我可以通过手机和桌面网络浏览器从我的生产服务器访问此应用程序。
感谢您的时间和建议。
答案 0 :(得分:0)
在Visual Studio中,默认情况下,项目始终在根目录中运行。在IIS服务器上,看起来您正在名为/mbsa17/
的子文件夹中运行项目。因此,您的所有网址引用必须使用相对路径(没有像/MbaExercise/somewebpage
这样的绝对路径),因为开头的/
表示“来自服务器的根目录”。您需要./
表示“相对于当前路径”或~/
表示“相对于我的项目的根”。为简单起见,我通常会使用~/
到处使用/
。
答案 1 :(得分:0)
访问" window.location.href"从我的Android手机到我的笔记本电脑和,对于Visual Studio中的一些IIS配置,我得到了404&s。
我正在使用正斜杠(' / MbsaExercise),如下所示: window.location.href =(' / MbsaExercise / MobileExerciseDescriptionMaint?mode = Create');
我采取了所有" window.location.href"的正斜线(' MbsaExercise)。像这样 " window.location.href =(' MbsaExercise / MobileExerciseDescriptionMaint?mode = Create');" 在主要浏览器和我的生产机器上测试删除的正斜杠之后。是的,不得不改变50个左右的文件,但速度很快。我认为这是我的答案。
我花了几周时间尝试在IIS中使用和配置我的应用程序。如果有人 在IIS中找到了使用" window.location.href"这个正斜杠的方法,请告诉我。
另外,仅供参考,使用" ./"似乎也像这样工作: window.location.href =(' ./ MbsaExercise / MobileExerciseDescriptionMaint?mode = Create');