您好我正在使用统一dll创建一个web api,当我首先整合这个我面临的时候
无法加载文件或程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
错误我通过添加:
解决了这个问题<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
在Web配置文件中,然后我运行应用程序和 我得到如下错误
无法构造String类型。您必须配置容器以提供此值。
然后我搜索了互联网,我补充说:
[InjectionConstructor]
到构造函数,它不解决问题
我正在使用ApiController
我的控制器代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Configuration;
using Microsoft.Practices.Unity;
namespace Check.Api.Controllers
{
public class CommonController : ApiController
{
#region Variables
/// <summary>
/// Business layer of .
/// </summary>
private IBLPIP _blPIP;
private IBLCommon _blCommon;
#endregion
#region Constructor
/// <summary>
/// Constructor of Login API Controller
/// </summary>
/// <param name="auth"></param>
[InjectionConstructor]
public CommonController( IBLCommon blCommon)
{
this._blCommon = blCommon;
}
#endregion
#region Methods
[HttpGet]
public HttpResponseMessage Get_CountryList()
{
try
{
List<Country> CountryList = _blCommon.GetCountryList();
return Request.CreateResponse<List<Country>>(HttpStatusCode.OK, CountryList);
}
catch (Exception ex)
{
LogUtil.Error("LoginServiceController\\Login\n" + ex.Message);
return Request.CreateResponse(HttpStatusCode.NotFound);
}
}
#endregion
}
}
任何人请提前帮助我。
答案 0 :(得分:2)
无法构造String类型。您必须配置容器以提供此值。
错误表示您将字符串传递给一个或多个类的构造函数(此处未显示)。
解决方案是配置Unity以将字符串注入您的类。
public class SomeType : ISomeType
{
private readonly string someString;
public SomeType(string someString)
{
this.someString = someString;
}
}
string someString = "This is a string value";
container.RegisterType<ISomeType, SomeType>(
"someString", new InjectionConstructor(someString));
需要手动注入字符串和基本类型,因为Unity不知道要注入哪个字符串。