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

asp.net visual-studio azure iis visual-studio-2013

30935 观看

3回复

2148 作者的声誉

我在Visual Studio Pro 2013中运行一个非常基本的webAPI项目。它在我的机器上的localhost上运行正常。然后我尝试从不同的机器转到浏览器并转到:57571类似于我如何通过将服务器ipaddress后跟端口号指向rails应用程序。然后我收到 错误请求 - 无效主机名 HTTP错误400.请求主机名无效。

我也通过在天蓝色中放置两台Windows机器来复制这个。一个正在运行的visual studio pro 2013.我运行相同的应用程序,它在本地工作正常。然后,如果我尝试从另一个VM指向它(在同一个虚拟网络上,我也可以ping服务器vm)我仍然得到错误请求 - 无效主机名HTTP错误400.请求主机名无效。

请注意,我不关心自定义domian我只是希望能够使用IP地址从另一台机器运行此应用程序。这可能吗?(如果有的话,我对错误做了什么想法?)这是我尝试过的不是我的 工作 这也没有让它工作

我怎么能告诉visual studio作为管理员运行?

(我正在使用Visual Studio运行的Windows Server 2012 R2。我关闭了两台机器上的防火墙)

作者: Frank Visaggio 的来源 发布者: 2015 年 2 月 24 日

回应 (3)


31

2148 作者的声誉

决定

以下是我如何使用它。

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:*策略

作者: Frank Visaggio 发布者: 25.02.2015 09:28

17

171 作者的声誉

我无法评论,但想回答@EthanKeiser

Visual Studio 2015为每个解决方案都有一个单独的配置文件,您需要根据接受的答案进行更新。该文件位于:

C:\Users\\{UserName}\Documents\Visual Studio 2015\Projects\\{SolutionName}\\.vs\config\applicationhost.config
作者: Daniel Vest 发布者: 22.02.2016 11:36

0

349 作者的声誉

帮助我的另一件事是添加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结果是Bad Request

此外,如果您执行“热替换”,请确保您正在重置IIS。您可以通过右键单击Visual Studio中的项目,选择Unload project,然后更改applicationhost.config,保存以及Reload project在VS中来执行此操作。

顺便说一句,不要忘记为您的项目生成SSL证书。我不确定Visual Studio会为你做那件事。

端口应在4430044399之间

以下是生成SSL的方法:

  1. 以管理员身份打开Visual Studio开发人员工具
  2. 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
  3. netsh http show sslcert ipport=0.0.0.0:44302 (你需要从这一步得到appid)
  4. netsh http delete sslcert ipport=0.0.0.0:44302

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

  1. netsh http add sslcert ipport=0.0.0.0:44302 certhash=<thumbprint> appid={id from step 3}(包括支撑{}

希望有所帮助。

作者: Vlad 发布者: 30.04.2019 09:08
32x32