13
[assembly:  WebActivator.PreApplicationStartMethod(typeof(MyApp.App_Start.StructureMapMvc), "Start")]

namespace MyApp.App_Start
{
    public static class StructureMapMvc
    {
        public static void Start()
        {
            var container = IoC.Initialize();
            DependencyResolver.SetResolver(new SmDependencyResolver(container));
        }
    }
}

これは、global.asaxのApplication_startの前に実行されることになっている私のコードです。Webプロジェクトをmvc3からmvc4にアップグレードしていました。そのため、その過程で名前空間を間違えました。これは、名前空間を修正する前に機能していました。現在は機能していません。iisをリセット/DNSをフラッシュ/ソリューションを再構築/C:\ Windows \ Microsoft.NET \ Framework64 \ versionxxxxxx ... \ Temporary ASP.NET Files\rootの一時的な.netファイルを削除しました。何も機能しませんでした。私はここで何かが欠けていますか?Initialize()メソッドには、すべての構造マップ関連の依存関係解決関連があります。ですから、これを理解せずに前進することはできません。何時間も問題を診断しようとしましたが、助けが必要です。

4

5 に答える 5

22

コードがWebサイトプロジェクト(つまり、App_Codeフォルダーの下)にある場合、 PreApplicationStartupMethodを使用することはできません。代わりにPostApplicationStartupMethodを使用できます。「Pre」メソッドはglobal.asax*Application_Start *が実行される前に実行され、「Post」メソッドは実行された後に実行されます。

私はこれを理解する前に1、2時間無駄にしたので、これが他の誰かがそれを避けるのに役立つことを願っています!

于 2013-03-13T15:33:06.217 に答える
2

私の経験ではWebActivator、プロジェクト設定(.csproj.userまたは.vbproj.user<StartAction>NoStartPage</StartAction>に修正が設定されて<StartAction>CurrentPage</StartAction>いる場合は機能せず、次にデバッグするときに機能するはずです。

また、.userファイル(通常はsvnに含まれていません)に含まれているため、一部の開発環境では機能するが他の環境では機能しない理由を特定することは困難です。

于 2013-05-19T09:45:11.243 に答える
0

WebActivatorバージョン1.5.3では、 ファイルMyClass.cs.ppはフォルダー内に存在するだけでなくApp_Start、ターゲットプロジェクトので変換されたファイルを作成するためにフォルダー内に存在する必要があります。content\App_Startnuget installApp_Start

私の知る限り、これは文書化されていません。

注:このソリューションは、元のファイルが従来のファイルシステムアプローチを使用して.nupkg構築されている限り機能するようですが、特定のファイルを対象として使用する場合は機能しませんnuget packnuget pack.csproj

于 2013-01-04T06:01:17.247 に答える
0

私にとっての問題は、NuGet.Serverダウンロードを使用してプライベートNuGetリポジトリを作成するときでした(WebActivatorEx PreApplicationStartMethod属性を使用します)。

私がしたことは、空のWebサイトプロジェクトを作成することでした。これは正しくありません。空のWebアプリケーションプロジェクトである必要があります。空のWebアプリケーションを作成し、NuGet.Serverを再インストールすると、すべて正常に機能しました。

したがって、空のWebサイトプロジェクトを使用したことがある場合は、それが問題の原因である可能性があります。代わりに、空のWebアプリケーションプロジェクトを使用してください。

空のWebサイトプロジェクトには、System.Web.PreApplicationStartMethod(WebActivatorExで使用される)を機能させるASP.NETの「接着剤」の一部が欠落していると思います。たぶん、もう少し詳細を知っている誰かがこれがなぜであるかを説明することができますか?

于 2014-11-12T12:37:52.943 に答える
0

私の問題は2つありました。

1)タイプへのフルパスを宣言しない

2)前ではなく、名前空間内に属性を配置する

これらの両方を修正すると、機能しました。

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyApp.Api.Controllers.MyController), "AutoMapperStart")]


namespace MyApp.Api.Controllers
{

    public class MyController : ApiController
    {
        public static void AutoMapperStart()
        {
            MyMapperConfig.DefineMappings();
        }
    }
}
于 2015-11-05T02:16:02.123 に答える