c# - 在 Unity 上更新 Nuget 时会抛出 500,并带有“确保控制器具有无参数的公共构造函数。”,
问题描述
所以我有一个与 Unity 完美运行的 WebApi 服务。我决定采用覆盖 UnityConfig.cs 的 Nuget 包更新,但是,我添加了我的代码,当我尝试从 VisualStudio 运行它时它工作正常。问题是当我部署 bin 并尝试从 IIS 运行 api 时。我得到 500,但有以下例外:
Exception.Source = System.Web.Http.Dispatcher.DefaultHttpControllerActivator Exception.Message = 尝试创建“StateController”类型的控制器时出错。确保控制器有一个无参数的公共构造函数。
/// <summary>
/// Specifies the Unity configuration for the main container.
/// </summary>
public static class UnityConfig
{
#region Unity Container
private static Lazy<IUnityContainer> container =
new Lazy<IUnityContainer>(() =>
{
var container = new UnityContainer();
RegisterTypes(container);
return container;
});
/// <summary>
/// Configured Unity Container.
/// </summary>
public static IUnityContainer Container => container.Value;
#endregion
public static void RegisterTypes(IUnityContainer container)
{
string dbConnectionString = WebConfigurationManager.ConnectionStrings["abc"].ConnectionString;
StateRepository stateRepository = new StateRepository(dbConnectionString);
// Register a default (un-named) type mapping with a singleton lifetime
container.RegisterInstance<IStateRepository>(stateRepository);
}
}
她的是我的 UnityWebApiActivator.cs
using System.Web.Http;
using Unity.AspNet.WebApi;
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(PowerManagementServices.UnityWebApiActivator), nameof(PowerManagementServices.UnityWebApiActivator.Start))]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(PowerManagementServices.UnityWebApiActivator), nameof(PowerManagementServices.UnityWebApiActivator.Shutdown))]
namespace PowerManagementServices
{
/// <summary>
/// Provides the bootstrapping for integrating Unity with WebApi when it is hosted in ASP.NET.
/// </summary>
public static class UnityWebApiActivator
{
/// <summary>
/// Integrates Unity when the application starts.
/// </summary>
public static void Start()
{
// Use UnityHierarchicalDependencyResolver if you want to use
// a new child container for each IHttpController resolution.
// var resolver = new UnityHierarchicalDependencyResolver(UnityConfig.Container);
var resolver = new UnityDependencyResolver(UnityConfig.Container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
}
/// <summary>
/// Disposes the Unity container when the application is shut down.
/// </summary>
public static void Shutdown()
{
UnityConfig.Container.Dispose();
}
}
}
缺什么 ?正如我提到的,在我进行 nuget 更新之前,该服务运行良好。现在它可以在 VS 中工作,但在部署时不能。
提前致谢。
解决方案
推荐阅读
- yarnpkg - 如何使用 Yarn 的 .pnp.js 文件?
- php - Instagram 故事刮刀
- git - git存储库中的文件被复制或删除并添加
- javascript - 如果 if 语句为真,则在 Vue.js 中隐藏选项卡
- powershell - 如何将 Office 365 Teams Get-Team 和 Get-Teamuser 结果导出到 CSV 文件
- java - 为什么我只能在部署了相同耳朵的三台 Web 服务器中的一台上获得 ConcurrentModificationException
- sql - 将部分代码作为字符串存储在表中,并在运行时作为代码执行
- azure-devops - Azure Boards 自动将问题移至“完成”状态
- django - Kubernetes 部署上的 Django:数据库迁移的最佳实践
- javascript - 超过 1 个模态?