在作为前端开发人员的新项目中,我加入的团队正在使用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;为什么会这样。
在以下情况下有效:
https://192.168.56.102:44302/....
<add key="ApiEndpointBase" value="https://localhost:44302/" />
醇>
但我想从主机上的浏览器访问它。如果一些asp.net开发者可以帮助我,我将非常感激:)
外部请求已经在运行。否则我不会在主机上提供应用程序。我还使用netsh注册了URL,并且在guest虚拟机上禁用了Windows防火墙。所以我认为这不是IIS Express enable external request
的重复