我有一个 Umbraco 7 应用程序,它使用 V4.0 程序集来处理诸如 System.Web.WebHost、System.Web.Http 和相关程序集之类的东西。我正在尝试让 Web API2 dll 与 Umbraco 应用程序一起使用,并且遇到了困难。
如果我使用程序集重定向默认为 V5.0 程序集,则应用程序会在 Umbraco 加载并尝试使用控制器时中断。这里的问题是,在 System.Web.Http 的 V5.0 中,ApiController 现在在设置 Request 时有一个检查。此检查总是失败并抛出 InvalidOperationException:
set
{
if (value == null)
{
throw Error.PropertyNull();
}
HttpRequestContext requestContext = value.GetRequestContext();
HttpRequestContext httpRequestContext = this.RequestContext;
if (requestContext != null && requestContext != httpRequestContext)
{
throw new InvalidOperationException(SRResources.RequestContextConflict);
}
this.ControllerContext.Request = value;
value.SetRequestContext(httpRequestContext);
RequestBackedHttpRequestContext requestBackedHttpRequestContext = httpRequestContext as RequestBackedHttpRequestContext;
if (requestBackedHttpRequestContext != null)
{
requestBackedHttpRequestContext.Request = value;
}
}
我正在尝试的另一件事是正确加载和使用两个 DLL。在这种情况下,我遇到了一个错误,但不知道我是否做得正确。我所做的只是添加文件夹以保留相同 dll 的不同版本,并使用以下方式将它们连接到 web.config 中:
<probing privatePath="webapi2_dlls;" />
错误:CS1705:程序集 'WebApi,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 使用 'System.Web.Http,Version=5.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35',其版本高于引用程序集“System.Web.Http,版本=4.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”
有希望吗?