您好我一直在寻找使用Unity 3和Web.API项目的明确方法,我似乎只是碰壁砖并获得不起作用的示例,如果有人,我会非常感激可以指出一个明确的例子,因为那里的一切似乎已经过时了。 我有一个新创建的Web.API项目 然后我做了安装包Unity.WebAPI,这似乎安装了unity等,但没有BootStrapper.cs。但是我添加了UnityConfig.RegisterComponents();按照说明访问WebApiApplication文件。 看了看我然后运行install-package unity.mvc4这确实给了我bootstrapper.cs然后我遇到了重大问题,因为项目没有编译 错误1'xxxx.Web.API.Areas.HelpPage.XmlDocumentationProvider'未实现接口成员'System.Web.Http.Description.IDocumentationProvider.GetResponseDocumentation(System.Web.Http.Controllers.HttpActionDescriptor)'
我试图按如下方式实现它们
public string GetDocumentation(HttpControllerDescriptor controllerDescriptor)
{
throw new NotImplementedException();
}
和
public string GetResponseDocumentation(HttpActionDescriptor actionDescriptor)
{
throw new NotImplementedException();
}
所以我然后单击消息来更新引用运行项目并获取 “通过方法'System.Web.Http.GlobalConfiguration..cctor()'尝试访问字段'System.Web.Http.GlobalConfiguration.CS $<> 9__CachedAnonymousMethodDelegate2'失败。”}
我真的不确定走哪条路?似乎在团结中如此笨拙,但实际上什么都没有用,当然我错过了什么?
答案 0 :(得分:0)
以下是我在Unity
中实施Web API
的方法(注意:没有引导程序)。安装UnityConfig.cs
后,您应该有一个Unity 3
。它将位于您的App_Start
文件夹中,并具有RegisterComponents()
方法。我看起来像这样:
public static void RegisterComponents()
{
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
// Conventional registration mapping
// container.RegisterType<IHomeService, HomeService>();
// This will register all types with a ISample/Sample naming convention
container.RegisterTypes(
AllClasses.FromLoadedAssemblies(),
WithMappings.FromMatchingInterface,
WithName.Default);
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
}
您需要将此添加到Global.asax's Application_Start()
方法中:
UnityConfig.RegisterComponents();
如果您想使用传统的映射路径,则需要将映射添加到RegisterComponent()
方法。如果您遵循基于约定的方法,例如 Sample.cs 实现 ISample ,那么您就不必注册。您可以随时使用两种方式。
<强>更新强>
以下是 packages.config
中的Unity条目<package id="Unity" version="3.0.1304.1" targetFramework="net45" />
<package id="Unity.WebAPI" version="5.1" targetFramework="net45" />
答案 1 :(得分:0)
感谢您的帮助,它有点似乎有些不一致,我现在终于解决了这个问题,所以这些是我遵循的步骤。
确保以管理员身份运行VS以避免程序包错误
运行 更新包以确保所有包都是最新的 当被要求时 File&#39; Areas \ HelpPage \ Views_ViewStart.cshtml&#39;已存在于项目&#39; ItsSorted.WebApi&#39;。你想覆盖它吗? [Y]是[A]是全部[N]否[L]否全部[?]帮助(默认为&#34; N&#34;):a 使用A
更新web.config以停止剃刀错误
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
并添加
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
此时应用处于Unity状态
运行Unity安装 安装包Unity.WebAPI
痛苦的经历,但现在正在工作:)
忘记提及框架不是我用两个版本试过的问题