0

In a new project as frontend developer the team I joined is using ASP.NET MVC for the backend. I am running a mac, so this means I can only compile the C# sources on Windows to run the application locally.

I have a Win10 setup inside a VM using virtual box. The sources are on the host and shared to the guest via a samba share (On Z:\ in the guest) and a host-only network adapter. Goal is to reach the app then from the host using the IP of the Guest, i.e. https://192.168.56.102:44301/ (it`s a single page application written in angular)

In the guest I compile from the command line using msbuild and then I start the REST API and the "Web App" using iisexpress.exe: (because visual studio is way to slow in the guest)

commands to build & start:

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"

In Web.config of the Solution AppName.Web I have the following option:

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

The REST API is listening on port 44302, the "web app" on port 44301

So when I enter https://192.168.56.102:44301/ I get the app served.

The problem:

For each page reload the web app (HomeController.cs) does an http request against the API, so this means it is internally communicating to 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 is https://192.168.56.102:44302/

So there are two apps running in the guest using iisexpress, and one of them does an http request against the other using the Address https://192.168.56.102:44302/.... - and this request times out, or fails somehow and I don't get why.

It works if:

  1. <add key="ApiEndpointBase" value="https://localhost:44302/" />
  2. I visit https://localhost:44301/ in a browser inside the guest

But I want to access it from a browser on the host. Would really appreciate if some asp.net devs may help me here :)

EDIT:

External requests are already working. Else I would not get the app served on the host. I also registered the URLs using netsh and windows firewall is disabled on the guest. So I think this is not a duplicate of IIS Express enable external request

fr00t
  • 681
  • 1
  • 4
  • 19
  • Possible duplicate of [IIS Express enable external request](https://stackoverflow.com/questions/3313616/iis-express-enable-external-request) – Xavier J Jun 07 '17 at 16:43
  • External requests are already working. Else I would not get the app served on the host. I also registered the URLs using `netsh` and windows firewall is just off on the guest – fr00t Jun 07 '17 at 16:52
  • I don't get your problem. Why can't you hit it from a browser on the host? Are you getting an error? Is the URL not right? – mason Jun 07 '17 at 17:26
  • Problem more specifc: there are two apps running in the guest using iisexpress, and one of them does an http request against the other using the Address `https://192.168.56.102:44302/....` - and this request times out, or fails somehow and I don't get why. – fr00t Jun 08 '17 at 08:18

0 Answers0