我在Visual Studio Pro 2013中运行一个非常基本的webAPI项目。它在我的机器上的localhost上运行正常。然后我尝试从不同的机器转到浏览器并转到:57571类似于我如何通过将服务器ipaddress后跟端口号指向rails应用程序。然后我得到了 错误请求 - 无效主机名 HTTP错误400.请求主机名无效。
我也通过在天蓝色中放置两台Windows机器来复制这一点。一个正在运行的visual studio pro 2013.我运行相同的应用程序,它在本地工作正常。然后,如果我尝试从另一个VM指向它(在同一个虚拟网络上,我也可以ping服务器vm)我仍然得到错误请求 - 无效主机名HTTP错误400.请求主机名无效。
请注意,我不关心自定义domian我只是希望能够使用IP地址从另一台机器运行此应用程序。这可能吗? (如果有的话,我做错了什么想法?) 这是我试过的 Didnt work for me This also didnt make it work
我怎么能告诉visual studio作为管理员运行?
(我正在使用Visual Studio运行的Windows Server 2012 R2。我关闭了两台机器上的防火墙)
答案 0 :(得分:31)
以下是我如何使用它。
转到 Visual Studio 2013中的C:\ users \ yourusername \ Documents \ IISExpress \ config \ applicationhost.config
将以下行添加到 applicationhost.config 使其正常工作
<binding protocol="http" bindingInformation="*:53676:*" />
这不起作用
<binding protocol="http" bindingInformation="<clientsIPaddress>:53676:*" />
Vs2015更新以及此更改的确切位置 application.config 概述如下。
VS 2015的文件路径如下:
丹尼尔提到的 C:\Users\\{YourUsername}\Documents\Visual Studio 2015\Projects\\{ThisSolutionName}\\.vs\config\applicationhost.config
。
我在哪里把它放在我的application.config中?
以下是XML文件中您可以找到绑定的父节。
<system.applicationHost>
<sites>
<site name="WebSite1" id="1" serverAutoStart="true">
<bindings>
<binding protocol="http" bindingInformation=":8080:localhost" />
</bindings>
</site>
</sites>
</system.applicationHost>
对于 applicationhost.config中未更改任何内容的新项目,大致为161行。
我没想到的是我认为客户端的IP地址,实际上并非如此。原因是我在Azure中有一个VNet到VNet连接,并且连接两个IP地址的网关重新分配运行我的应用程序的网络上的客户端IP地址。因此,我不得不查找映射到的新IP地址,以便不使用*:port:*
策略
答案 1 :(得分:17)
我无法发表评论,但想回答@EthanKeiser
Visual Studio 2015为每个解决方案都有一个单独的配置文件,您需要根据接受的答案进行更新。该文件位于:
C:\Users\\{UserName}\Documents\Visual Studio 2015\Projects\\{SolutionName}\\.vs\config\applicationhost.config
答案 2 :(得分:1)
有一个小时的问题,在这里尝试了所有与该问题有关的问题,但是解决了它以管理员身份运行Visual Studio的问题。否则,我会不断收到Unable to connect to web server 'IIS Express'
错误,这会以错误的方式引导您。
答案 3 :(得分:0)
帮我的另一件事是在绑定中添加mutating func formUnion(_ other: Self)
。
结果127.0.0.1
看起来像这样:
applicationhost.config
<bindings>
<binding protocol="http" bindingInformation="*:28066:" />
<binding protocol="http" bindingInformation="*:28066:localhost" />
<binding protocol="http" bindingInformation="*:28066:127.0.0.1" />
<binding protocol="http" bindingInformation="*:28066:sitename.com" />
<binding protocol="https" bindingInformation="*:44302:" />
<binding protocol="https" bindingInformation="*:44302:localhost" />
<binding protocol="https" bindingInformation="*:44302:127.0.0.1" />
<binding protocol="https" bindingInformation="*:44302:sitename.com" />
</bindings>
文件如下:
hosts
在添加127.0.0.1 localhost
127.0.0.1 sitename.com
之前,可以在浏览器中像127.0.0.1
一样导航,但是https://localhost:44302
导致https://sitename.com:44302
。
此外,如果执行“热替换”,请确保要重置IIS。您可以通过右键单击Visual Studio中的项目,选择Bad Request
,然后更改Unload project
,保存并在VS中applicationhost.config
来实现。
顺便说一句,不要忘记为您的项目生成SSL证书。我不确定Visual Studio是否会为您做到这一点。
端口的范围应从 44300 到 44399 。
以下是生成SSL的方法:
Reload project
makecert -r -pe -n CN="dev.helpme.transwestern.com" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
(您需要从此步骤获取appid)netsh http show sslcert ipport=0.0.0.0:44302
现在,打开“管理计算机证书”,导航到“个人”并选择新创建的。您将需要“详细信息/缩略图”。
netsh http delete sslcert ipport=0.0.0.0:44302
(包括bracets {} )希望有帮助。