需要有关使用asp.net mvc解决方案的内部网络通信的帮助

时间:2017-06-07 16:34:44

标签: c# asp.net angularjs asp.net-mvc virtualbox

在作为前端开发人员的新项目中,我加入的团队正在使用ASP.NET MVC作为后端。我正在运行一个mac,所以这意味着我只能在Windows上编译C#源以在本地运行该应用程序。

我在VM中使用虚拟盒进行Win10设置。源位于主机上,并通过samba共享(guest虚拟机中的Z:\)和仅限主机的网络适配器共享给guest虚拟机。目标是使用访客的IP从主机到达应用程序,即https://192.168.56.102:44301/(它是以角度编写的单页应用程序)

在guest中,我使用msbuild从命令行编译,然后启动REST API和" Web App"使用iisexpress.exe :(因为视觉工作室可以减慢客人的速度)

命令构建&开始:

msbuild Z:\TheApp.sln

:: shell #1
iisexpress.exe" /config:Z:\.vs\config\applicationhost.config /site:"AppName.Api"

:: shell #2
iisexpress.exe" /config:Z:\.vs\config\applicationhost.config /site:"AppName.Web"

在解决方案Web.config的{​​{1}}中,我有以下选项:

AppName.Web

REST API正在侦听端口44302,即#34; web应用程序"在44301号港口

因此,当我输入https://192.168.56.102:44301/时,我会收到应用程序。

问题:

对于每个页面重新加载,Web应用程序(HomeController.cs)对API执行http请求,因此这意味着它在内部与https://192.168.56.102:44302/进行通信

<add key="ApiEndpointBase" value="https://192.168.56.102:44302/" />

// HomeController.cs // this fails with an exception like "An error occurred while processing your request.": private readonly HttpClient client = new HttpClient(); ... /// <returns>The index view.</returns> public async Task<ActionResult> Index() { var response = await clientclient.GetAsync("api/foo?someId=" + someId); client.BaseAddress

因此,使用iisexpress在访客中运行了两个应用程序,其中一个使用地址https://192.168.56.102:44302/对另一个进行了http请求 - 此请求超时,或者以某种方式失败,我不知道&#39;为什么会这样。

在以下情况下有效:

  1. https://192.168.56.102:44302/....
  2. 我在访客
  3. 内的浏览器中访问<add key="ApiEndpointBase" value="https://localhost:44302/" />

    但我想从主机上的浏览器访问它。如果一些asp.net开发者可以帮助我,我将非常感激:)

    编辑:

    外部请求已经在运行。否则我不会在主机上提供应用程序。我还使用netsh注册了URL,并且在guest虚拟机上禁用了Windows防火墙。所以我认为这不是IIS Express enable external request

    的重复

0 个答案:

没有答案