我在VisualStudio 2017中创建了一个SharePoint 2013 WebPart,并使用本教程构建了一个RESTapi作为控制台应用程序: Calling a Web API From a .NET Client (C#)
在我的WebPart中,我从Restapi类创建一个对象来使用它。
RestAPI restApi = new RestAPI();
在RestAPI类的构造函数中,我调用
RunAsync().Wait();
在这种方法中,我正在调用另一种方法。
现在我的问题: 我需要获取身份验证票据,因此我正在使用此方法:
HttpContent content = new StringContent("username=" + lgname + ";password=" + pswd, System.Text.Encoding.UTF8, "application/x-www-form-urlencoded");
HttpResponseMessage response = await client.PostAsync($"/OTCS/cs.exe/api/v1/auth", content);
response.EnsureSuccessStatusCode();
var authResponse = await response.Content.ReadAsAsync<AuthResponse>();
return authResponse.Ticket;
作为控制台应用程序,这很好。
这是AuthResponse类:
[JsonObject]
public class AuthResponse
{
[JsonProperty("Ticket")]
public string Ticket { get; set; }
}
我得到了使用http://json2csharp.com/
格式化JSON的类但是当我在SharePoint Webpart中使用它时,我得到以下异常:
{“无法加载文件或程序集'System.Net.Http.Formatting, Version = 5.2.3.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或 其中一个依赖项。系统找不到该文件 指定。“:”System.Net.Http.Formatting,Version = 5.2.3.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35“} System.Exception {System.IO.FileNotFoundException}
在.csproj文件中,可以找到以下条目:
<Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
</Reference>
可以在路径中找到formatting.dll。
问题是无法找到System.Net.Http.Formatting。
问题出在the await response.Content.ReadAsAsync<AuthResponse>()
我试图使用:
JsonConvert.DeserializeObject<AuthResponse>(jsonString);
然后我得到了几乎相同的例外:
{“无法加载文件或程序集'Newtonsoft.Json,Version = 10.0.0.0, Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其中一个 依赖。系统找不到该文件 指定。“:”Newtonsoft.Json,Version = 10.0.0.0,Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed“} System.Exception {System.IO.FileNotFoundException}
.csproj条目:
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
Newtonsoft.Json.dll位于HintPath
中app.config看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
当我将其作为控制台应用程序进行测试时,所有引用都是最新的并且正常工作。
我在程序和SharePoint Server中使用.NET v4.5。 当我没有发现异常时,我得到了这个:
发生了'System.AggregateException'类型的异常 mscorlib.dll但未在用户代码中处理附加信息: 发生了一个或多个错误。发生
我试图重新安装引用,但这不起作用 那么我如何才能获得在SharePoint Webpart中工作的引用?
由于