2016-09-28 27 views
0

我有一个在Asp MVC Core 1.0下运行的Aurelia应用程序。该应用程序使用HttpClient调用控制器操作,该操作返回json数据。家庭控制器包含了所有的动作,和我配置HttpClient的,像这样:如何使用Aurelia + .Net Core + IIS Web应用程序获取正确的URL

http.configure(config => { 
     config 
      .useStandardConfiguration() 
      .withBaseUrl('Home/'); 
}); 

在运行Visual Studio中的应用程序,一切正常。它在localhost:55475上托管,当我拨打this.http.fetch('GetData')时,它向localhost:55475/Home/GetData发送请求。

当我部署到IIS时,问题出现了。该应用程序作为默认网站下的Web应用程序部署,因此根网址为server.org/MyApp。应用程序启动时很好,但是当我拨打电话this.http.fetch('GetData'),从server.org/Home/GetData,而不是server.org/MyApp/Home/GetData要求,这显然导致404

为什么我的读取请求忽略MyApp?我认为没有在我的.withBaseUrl上的主导斜线会使网址相对,但显然不是?

+0

只要轻轻一碰,就会得到同样的问题。我目前正在研究如何将System.baseURL传递到模块中,以便我可以预先调用它以调用withBaseUrl。但是,我只是不明白为什么应用程序没有使用它加载的目录作为工作的基础。 –

+0

这就是我所做的。我在我的视图中添加了@ Html.Hidden(“rootUrl”,Url.Content(“〜”))。然后我将该值加载到共享模块中:'this.rootUrl = $('#rootUrl')。val();'。然后,我将'rootUrl'附加到我的所有API调用中。不是非常优雅,但它的作品。 – Jerrad

回答

1

我找到的解决方案是放在我放入浏览器地址栏的URL中......在你的情况下,如果你浏览到server.org/MyApp/而不是浏览到server.org/MyApp,它是否会开始工作(注意额外的斜线)?这对我有效。

因此,我需要实施的整体修复方案是在托管Aurelia的页面顶部有一个base元素,该元素用基准URL设置了尾部斜线,例如,

<base href="/MyApp/" />

其中我添加使用ASP.Net核心与这条线在我index.cshtml文件:

<base href="@this.Url.Content("~")/" />

,否则,你可以使用302用户重定向到的完整URL响应。

相关问题