System.Private.ServiceModel 的问题

may*_*ʎɐɯ 2 c# asp.net-core-3.1

我创建了一个 Core 3.1 应用程序,它使用基于 .net 标准 2.0 的 Web 服务。

在本地开发环境中一切正常。在我将其部署到 UAT (IIS) 上之前,我收到以下异常:

Exception: 
System.IO.FileNotFoundException: Could not load file or assembly 'System.Private.ServiceModel, Version=4.1.2.4, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
File name: 'System.Private.ServiceModel, Version=4.1.2.4, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at MyNameSpace.Service.TheService..ctor()
Run Code Online (Sandbox Code Playgroud)

经过一段时间的研究,我发现了这一点

甄兰 回复

首先,将文件复制 %USERPROFILE%\.nuget\packages\system.private.servicemodel\4.4.2\runtimes\unix\lib\netstandard2.0\system.private.servicemodel.dll到函数应用的根目录。如果未找到该文件,您可以从 nuget.org 下载 Nuget 包。

然后,将以下内容复制/粘贴到项目的 .csproj 文件中。它将包括用于构建和发布的 SPSM.dll。

<ItemGroup>
    <None Update="System.Private.ServiceModel.dll">
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>   
</ItemGroup>
<Target Name="CopySPSM" BeforeTargets="Build">
    <Copy SourceFiles="System.Private.ServiceModel.dll" DestinationFolder="$(OutputPath)\bin" />   
</Target>
Run Code Online (Sandbox Code Playgroud)

我还检查了Protobuf-net 缺少依赖项 System.Private.ServiceModel无法在 Azure Function v2 中加载文件或程序集“System.Private.ServiceModel”而没有太大进展。

我已遵循答案并确保该文件位于我的部署中,但仍然存在相同的问题,出了什么问题以及如何解决该问题?

may*_*ʎɐɯ 7

当我提出问题时,我取得了一些进展,并想与那些可能面临同样问题的人分享我的答案。

据我了解,这是用于我的项目的 Web 服务部分,因此它在我的本地环境中提供服务。但是,当我将其部署在 UAT IIS(Internet 信息服务器)上时,默认情况下它没有此功能。

因此,将文件添加为我的问题中提到的其他答案并没有帮助。这可能与选择正确的版本有关,对此一无所知。

我修复它的方法是,我刚刚System.Private.ServiceModel通过 NuGet 管理器将最新版本的 NuGet 包安装到我的 Web 应用程序项目中。

<ItemGroup>
  <PackageReference Include="System.Private.ServiceModel" Version="4.7.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

在UAT上重新部署后,问题解决并且立即生效。

  • 你拯救了我的日子,也遇到了同样的问题。现在解决了。 (2认同)