Web Deploy 发布 snk 文件

3
我正在使用Visual Studio 2017开发和发布一个ASP.NET Web应用程序,使用Web Deploy针对IIS进行部署。我的Web应用程序程序集已经签名,因此我的项目包含根文件夹中的.snk文件。当我将Web应用程序部署到服务器时,.snk文件也会被发送过去。
我想这不是一个好主意,因为.snk文件包含必须保持安全的私钥。我不喜欢在各个Web服务器上散布我的.snk文件的想法。据我所知,Visual Studio应该在构建解决方案时使用此文件对我的程序集进行签名,而不是将其部署到服务器上。
如是我正确吗?如果是,我该如何阻止Visual Studio将此文件部署到服务器上?
2个回答

2

当我在Visual Studio 2019中发布时,遇到了一个类似的问题,但发现SNK文件已被添加到Web项目中,并且构建操作为"Content"。

只需编辑SNK文件属性,将"Build Action"从"Content"更改为"None"即可防止它包含在发布文件夹中的Strong Name Key文件。


1

除非另有指定,否则SNK文件不会作为有效的MIME类型由IIS提供。当有人在浏览器中键入文件的URL时,他们将会收到404错误。

如果您不想首先将其发送到服务器,您也可以从Visual Studio资源管理器中删除它,但仍然保留文件夹中的文件(请注意,VS也会删除该文件,因此您需要在Windows资源管理器中手动将其复制到文件夹中)。

更清洁的解决方案是创建一个wpp.targets文件,并在发布中指定要排除的文件/文件夹。

https://learn.microsoft.com/en-us/aspnet/web-forms/overview/deployment/advanced-enterprise-web-deployment/excluding-files-and-folders-from-deployment

在您的情况下,该文件可能如下所示:MyProject.wpp.targets
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <ExcludeFromPackageFiles Include="MyFile.snk">
      <FromTarget>MyProject.wpp.targets</FromTarget>
    </ExcludeFromPackageFiles>
  </ItemGroup>
</Project>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接