2

HtmlヘルパーがMVC3内にどのように構築されているかを理解しようとしています。そこで、MVC 3ソースをダウンロードし、同じソリューションに別のプロジェクトとして追加してデバッグしました。

私はこの手順に従いました。

  1. MVCアプリケーションからSystem.web.Mvc参照を削除しました

  2. デバッグ用のSystem.web.Mvcソースコードプロジェクトリファレンスを追加しました。

  3. Web.config System.Web.Mvc、Version = 3.0.0.0、Culture = neutral、PublicKeyToken=31BF3856AD364E35からSystem.Web.Mvc

ただし、依存性注入のために3つのアプリケーションに他の(、、、)NInject参照NInjectを追加しています。NInject.web.commonWebActivatorMicrosoft.web.infrastructureMVC

今、私は以下のソースコードで'System.Web.MVCと言っているソースでエラーを受け取っていますAn error occurred when trying to create a controller of type 'MVCApp.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor.MVC

public IController Create(RequestContext requestContext, Type controllerType) 
{
    try
    {
        return (IController)(_resolverThunk().GetService(controllerType)
            ?? Activator.CreateInstance(controllerType));
    }
    catch (Exception ex) 
    {
        throw new InvalidOperationException(
            String.Format(CultureInfo.CurrentCulture,
                MvcResources.DefaultControllerFactory_ErrorCreatingController, controllerType),
                ex);
    }
}

DependencyResolver.Currentプロパティを確認すると、DependencyResolver.Currentと表示されます。タイプ「System.Web.Mvc.DependencyResolver」は「System.Web.Mvc.dll」と「System.Web.Mvc.dll」の両方に存在します。

MVC3ソースコードを使用してMVC3Appをデバッグするには、さらに何をする必要がありますか?このエラーを回避するにはどうすればよいですか?

4

1 に答える 1

1

このソリューションを見てください: Ninject + MVC3 is not inject into controller

これを Web.config に追加します

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0" newVersion="4.0.0.0" />
    <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0" />
    <!-- The following line was missing -->
    <bindingRedirect oldVersion="3.0.0.0" newVersion="4.0.0.0" /> 
  </dependentAssembly>

この問題を解決しました:

DependencyResolver.Current プロパティを確認すると、DependencyResolver.Current と表示されます タイプ 'System.Web.Mvc.DependencyResolver' は 'System.Web.Mvc.dll' と 'System.Web.Mvc.dll' の両方に存在します

乾杯。

于 2014-01-29T13:56:58.567 に答える