我有一个.NET Core xUnit项目。我试图从中调用WCF服务,但得到以下异常:
System.InvalidOperationException occurred
HResult=0x80131509
Message=An error occurred while loading attribute 'ServiceContractAttribute' on type 'IMyContract'. Please see InnerException for more details.
Inner Exception 1:
FileNotFoundException: Could not load file or assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
它适用于具有相同Nuget包System.ServiceModel.Http.4.3.0
的Framework 4.7项目。
答案 0 :(得分:47)
如果您使用的是.NET Standard 2.0
(我测试的内容),您可以安装兼容的NuGet
软件包。
基本服务模型位于 System.ServiceModel.Primitives
(目前为v4.4.0)。
如果需要,也可以安装System.ServiceModel.Http
。
答案 1 :(得分:12)
Microsoft WCF Web Service Reference Provider包装SvcUtil.exe,并将从您的端点生成.NET Standard项目。查看项目文件,您将看到适合您的ServiceModel引用。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard1.4</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.ServiceModel.Duplex" Version="4.3.0" />
<PackageReference Include="System.ServiceModel.Http" Version="4.3.0" />
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.3.0" />
<PackageReference Include="System.ServiceModel.Security" Version="4.3.0" />
<PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />
</ItemGroup>
</Project>
当我需要这样做时,我能够在我的.NET Core项目中使用生成的类库。
答案 2 :(得分:0)
我遇到了同样的问题,我不得不将 .asmx Web 服务添加到我的类库 asp.net 核心项目中,我尝试通过添加连接服务选项直接添加引用,但我看不到任何配置文件和大量引用还有错误,以下是我解决问题的步骤。
1-创建库项目名称服务映射 2-创建文件夹 Web References,然后在文件夹 ClientHotel 中创建 3-从视图 ---> 终端 --- 命令提示符在 Visual Studio 中打开终端。 4-通过命令集成asmx服务 svcutil http://abctest.asmx (.asmx URL) 在 ClientHotel 文件夹内。
5-它将创建包含引用的 .cs 类和 output.config 文件。 6-现在我有参考文献的错误,比如 命名空间 System.ServiceModel 等中不存在类型或命名空间 servicecontractattribute。
7-安装包 System.ServiceModel.Primitives 然后所有引用错误都将消失。
这就是我能够将 .asmx 服务添加到我的类库项目的方式。
答案 3 :(得分:-4)