我正在使用IoC在Sharepoint上构建Web服务。
这是我的主要代码:
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1), WebService(Namespace = "http://tempuri.org/")]
class WebService : System.Web.Services.WebService
{
private static IContainer Container { get; set; }
private DataTable Articles = new DataTable();
private string display;
[WebMethod(EnableSession = true, Description = "Web method for using search service")]
public string DisplayArticles()
{
var builder = new ContainerBuilder();
builder.RegisterType<WebServiceRepo>().As<IArticlesRepository>();
Container = builder.Build();
Search();
return display;
}
public void Search()
{
using (var scope = Container.BeginLifetimeScope())
{
var repo = scope.Resolve<IArticlesRepository>();
Articles.Load(repo.GetArticles(),LoadOption.OverwriteChanges);
display = repo.ReturnArticles(Articles);
}
}
}
问题是我在尝试调用使用 Autofac 的方法时遇到的错误:
System.IO.FileNotFoundException:无法加载文件或程序集"Autofac,版本=2.6.1.841,区域性=中性,公钥令牌=17863af14b0044da"或其依赖项之一。系统找不到指定的文件.
at SOAP_WebService.WebService.DisplayArticles((
它说找不到文件,但 bin/debug 文件夹中存在版本为 2.6.1.841 的Autofac.dll
。我正在使用这个版本的Autofac,因为在Sharepoint 2010上工作,我只能选择.NET framework v3.5,它是在此版本的.NET framework上运行的最新版本之一。
类似问题中提供的答案对我没有帮助。
不知何故,我设法解决了它...如果有人会遇到类似的问题:
我添加到项目中引用的Autofac程序集,尽管我的项目中存在该文件,但Visual Studio还是无法找到的(如果有人能解释为什么会发生这种情况,我将不胜感激(。它的解决方案是通过以下命令通过开发人员命令提示符将此程序集添加到 GAC:
gacutil /i <path to the assembly> /f