我有一个在 Asp MVC Core 1.0 下运行的 Aurelia 应用程序。该应用程序使用 HttpClient 调用 Controller 操作,该操作返回 json 数据。 Home Controller 包含所有操作,我像这样配置 HttpClient:
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('Home/');
});
在 Visual Studio 中运行应用程序时,一切正常。它托管在 localhost:55475
,当我调用this.http.fetch('GetData')
时,它向 localhost:55475/Home/GetData
发出请求.
当我部署到 IIS 时,问题就出现了。该应用程序作为 Web 应用程序部署在默认网站下,因此根 url 为 server.org/MyApp
。应用程序启动正常,但是当我调用 this.http.fetch('GetData')
时,它从 server.org/Home/GetData
请求而不是server.org/MyApp/Home/GetData
,这显然会导致 404。
为什么我的提取请求被忽略 MyApp
?我认为我的 .withBaseUrl
上没有前导斜杠会使网址相对,但显然不是?
最佳答案
我找到的解决方案是我在浏览器地址栏中输入的 URL...在您的情况下,如果您浏览到 server.org/MyApp/而不是 server.org/MyApp (注意额外的斜杠)?这对我有用。
所以我需要实现的整体修复是有一个 base
托管 Aurelia 的页面顶部的元素,使用尾部斜杠设置基本 URL,例如
<base href="/MyApp/" />
我使用 ASP.Net Core 在我的 index.cshtml 文件中添加了这一行:
<base href="@this.Url.Content("~")/" />
或者您可以使用 302 响应将您的用户重定向到完整的 URL。
关于javascript - 如何使用 Aurelia + .Net Core + IIS Web 应用程序获取正确的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39737078/