错误请求 - Visual Studio 2013中包含Asp.net WebAPI项目的无效主机名

时间:2015-02-24 15:19:19

标签: asp.net visual-studio azure iis visual-studio-2013

我在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。我关闭了两台机器上的防火墙)

4 个答案:

答案 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的方法:

  1. 以管理员身份打开Visual Studio开发人员工具
  2. Reload project
  3. 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)
  4. netsh http show sslcert ipport=0.0.0.0:44302

现在,打开“管理计算机证书”,导航到“个人”并选择新创建的。您将需要“详细信息/缩略图”。

  1. netsh http delete sslcert ipport=0.0.0.0:44302(包括bracets {}

希望有帮助。