首页 > 解决方案 > Web Deploy 发布 snk 文件

问题描述

我正在使用 Visual Studio 2017 开发和发布使用针对 IIS 的 Web 部署的 ASP.NET Web 应用程序。我的 Web 应用程序集已签名,因此我的项目在根文件夹中包含一个 .snk 文件。当我将 Web 应用程序部署到服务器时,也会发送 .snk 文件。

我想这不是一个好主意,因为 .snk 包含一个必须保持安全的私钥。我不喜欢将 .snk 文件的副本分散在各种 Web 服务器上的想法。据我了解,Visual Studio 应该在构建解决方案时使用此文件对我的程序集进行签名,而不是将其部署到服务器。

我对么?如果是这样,我如何阻止 Visual Studio 将此文件部署到服务器?

标签: asp.netvisual-studio-2017webdeploystrongnameassembly-signing

解决方案


除非另有说明,否则 IIS 不会将 SNK 文件作为有效的 MIME 类型提供。当有人在浏览器中键入文件的 url 时,他们将得到 404。

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

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

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/advanced-enterprise-web-deployment/ exclude-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>

推荐阅读