を登録していない私はタイプのコントローラを作成しようとすると、エラーが発生しまし.netシンプルなインジェクター。私は私のWEBAPIコントローラを呼び出すようにしようとしていた後webApiControllersノーパラメーターなしのパブリックコンストラクタ
、エラーが発生している「DrinkController」。コントローラにパラメータのないパブリックコンストラクタがあることを確認します。ここで
私Bootstrapper.cs私はGlobal.asax.cs
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
var container = new Bootstrapper().Start(GlobalConfiguration.Configuration);
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
}
コントローラーで彼を呼び出す方法
public class Bootstrapper
{
public Container Start(HttpConfiguration configuration)
{
var container = new Container();
container.Options.DefaultScopedLifestyle = new LifetimeScopeLifestyle();
var conString = ConfigurationManager.ConnectionStrings["DrinksContext"].ConnectionString;
container.Register(() => new DrinksContext(conString), Lifestyle.Scoped);
container.Register<IUserManager, UserManager>();
container.Register<IDrinkManager, DrinkManager>();
container.Register<IOrderManager, OrderManager>();
container.Register<IUnitOfWork, UnitOfWork>();
container.RegisterWebApiControllers(configuration);
container.Verify();
return container;
}
}
とここにある - >
private readonly IOrderManager _orderManager;
private readonly IDrinkManager _drinkManager;
public DrinkController(IOrderManager orderManager, IDrinkManager drinkManager)
{
_orderManager = orderManager;
_drinkManager = drinkManager;
}
UnitiOfWorkコンストラクタDrinksContextに依存します。
ポストマンの応答 - here
私は私の経営者の中には、UnitOfWorkを注入しています。 DrinksContextは、リクエストごとに再初期化する必要があります。 container.RegisterWebApiControllers(configuration)
の行がコントローラコンストラクタを実行したときに、Postmanからの呼び出しだけがあったとき - いいえ。私はそれをどのように解決できますか?ありがとう。
完全なスタックトレースを投稿してください。 – Steven
また、Web APIアプリケーションでは、有効期間ライフスタイルとして「LifetimeScopeLifestyle」を使用することはできません。あなたの場合、 'WebRequestLifestyle'を使用してください。 – Steven
@スティーブンありがとう、それはまさにその問題でした。 – ovasylenko