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