为什么ServicePointManager.SecurityProtocol在同一台机器上的控制台应用程序和IIS网站中有所不同?

时间:2016-10-11 23:58:31

标签: .net iis tls1.2 .net-4.6.1

我正在尝试将一组项目更新到.NET 4.6.1以获得TLS 1.2支持。该解决方案包含类库,控制台应用程序,WebForms网站和MVC网站的混合。

我已经将每个项目和网站都改为目标.NET 4.6.1,并重新编译了所有内容。

现在,如果我在其中一个控制台应用程序中检查ServicePointManager.SecurityProtocol的默认值,那么我会得到以下结果:

Tls, Tls11, Tls12

但是如果我在IIS下运行的一个WebForms网站中检查ServicePointManager.SecurityProtocol的默认值,那么我得到以下内容:

Ssl3, Tls

因此,在IIS下比较控制台应用程序和WebForms网站时,我可以在同一台机器上看到ServicePointManager.SecurityProtocol的不同值。

我可以确认WebForms网站在" system.web"下的Web.config中有以下内容:

<compilation debug="true" targetFramework="4.6.1">

但似乎IIS忽略了&#34; targetFramework&#34;属性。

我是否需要在IIS中执行此操作才能使其按预期工作?

更新

看来IIS实际上是在尊重&#34; targetFramework&#34;属性,但与控制台应用程序相比,ServicePointManager.SecurityProtocol仍然在IIS下返回不同的默认值。

1 个答案:

答案 0 :(得分:3)

好的 - 我把它解决了。

要更改网站的目标框架,请右键单击它,单击“属性页”,然后在“构建”页面上更改“目标框架”。

如果你这样做,那么in将改变“system.web”节点下“编译”节点上的“targetFramework”属性:

<compilation targetFramework="4.6.1" />

但这还不够 - 您还需要更改“system.web”节点下“httpRuntime”节点上的“targetFramework”属性:

<httpRuntime targetFramework="4.6.1" />

现在,IIS下的网站和控制台应用程序都报告了ServicePointManager.SecurityProtocol的相同内容。