IIS 7でF#を使用してASP.NETMVCアプリケーションを作成しています。
ブラウザから実行しようとすると、次の内容を含むYSODが表示されます。
[ArgumentNullException:値をnullにすることはできません。パラメータ名:dictionary]
System.Collections.Generic.Dictionary2..ctor(IDictionary
2辞書、IEqualityComparer`1比較子)+12700827
System.Web.Compilation.CompilationUtil.CreateCodeDomProviderWithPropertyOptions(Type codeDomProviderType)+84
System.Web.Compilation.CompilationUtil.CreateCodeDomProviderNonPublic(Type codeDomProviderType) +16
System.Web.Compilation.AssemblyBuilder..ctor(CompilationSection compConfig、ICollectionreferencedAssemblies、CompilerTypecompilerType、String outputAssemblyName)+469
System.Web.Compilation.CompilerType.CreateAssemblyBuilder(CompilationSection compConfig、ICollectionreferencedAssemblies、StringgeneratedFilesDir、String outputAssemblyName)+ 127
System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()+675 System.Web.Compilation.BuildProvidersCompiler.PerformBuild()+46 System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)+11321455
System.Web.Compilation.BuildManager.CompileGlobalAsax ()+50 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()+872
Reflectorを使用してメソッドを調べ、それ以上のコンテキストが得られるかどうかを確認したところ、最初の行で失敗していることがわかりました。
private static CodeDomProvider CreateCodeDomProviderWithPropertyOptions(Type codeDomProviderType)
{
IDictionary<string, string> providerOptions = new Dictionary<string, string>(GetProviderOptions(codeDomProviderType));
//Snip
}
Web.configでF#CodeDomに指定したpropertyOptionsが正しくないと思います。ただし、それらを削除すると、同じエラーが発生します。
<system.codedom>
<compilers>
<compiler language="F#;f#;fs;fsharp" extension=".fs" warningLevel="4"
type="Microsoft.FSharp.Compiler.CodeDom.FSharpAspNetCodeProvider,
FSharp.Compiler.CodeDom">
<providerOption name="CompilerVersion" value="v4.0"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
このエラーを修正するためのアイデアはありますか?