我正在尝试将一组项目更新到.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下返回不同的默认值。
答案 0 :(得分:3)
好的 - 我把它解决了。
要更改网站的目标框架,请右键单击它,单击“属性页”,然后在“构建”页面上更改“目标框架”。
如果你这样做,那么in将改变“system.web”节点下“编译”节点上的“targetFramework”属性:
<compilation targetFramework="4.6.1" />
但这还不够 - 您还需要更改“system.web”节点下“httpRuntime”节点上的“targetFramework”属性:
<httpRuntime targetFramework="4.6.1" />
现在,IIS下的网站和控制台应用程序都报告了ServicePointManager.SecurityProtocol的相同内容。