netcoreapp2.0中的HttpRequestMessageProperty重新编译System.ServiceModel.Http,版本= 4.1.2.0而不是System.ServiceModel.Http,Version = 4.4.0.0

时间:2018-01-12 13:45:02

标签: c# wcf asp.net-core-2.0

我有一个webapi服务C#+ net core 2.0。它调用wcf并将数据返回给客户端。一切运作良好,有很多请求类型的HTTP HEAD没有WCF的凭据。 我读了article。 我试图添加

using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
                {
                    var httpRequestProperty = new HttpRequestMessageProperty();
                    httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " +
                    Convert.ToBase64String(Encoding.UTF8.GetBytes(client.ClientCredentials.UserName.UserName + ":" +
                    client.ClientCredentials.UserName.Password));
                    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] =
                       httpRequestProperty;
                    var homerResultTask = client.getClientCreditsAsync(new getClientCreditsRequest(cuid));
                    homerResultTask.Wait();
                    homerResult = homerResultTask.Result;
                }

没有简单的呼叫方法

var homerResultTask = client.getClientCreditsAsync(new getClientCreditsRequest(cuid));
                    homerResultTask.Wait();

在我的本地机器和开发环境中,一切运行良好。 但在生产环境中我遇到了错误:

  

System.IO.FileNotFoundException:无法加载文件或程序集&System; ServiceModel.Http,Version = 4.1.2.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。系统找不到指定的文件。

在我的project.csproj中:

<PackageReference Include="System.ServiceModel.Http" Version="4.4.0" />

并且没有指向版本4.1.2的System.ServiceModel.Http的链接。但是当我看到System.ServiceModel.Channels.HttpRequestMessageProperty的代码时  从Visual Studio Code中的元数据,我看到:

#region Assembly System.ServiceModel.Http, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

// System.ServiceModel.Http.dll

当我用&#34; dotnet发布-c release&#34;发布我的项目时我只有一个文件:它的System.ServiceModel.Http版本4.4.0。如何在生产环境中拥有2个不同版本的1 dll?

1 个答案:

答案 0 :(得分:0)

答案很简单:生产服务器上没有sdk,只有运行时。在生产服务器上安装https://www.microsoft.com/ru-ru/download/details.aspx?id=53321库System.ServiceModel.Http并使用公共令牌密钥= b03f5f7f11d50a3aappered之后。现在一切正常