【发布时间】:2009-11-13 20:16:25
【问题描述】:
我正在 IIS 7 上使用 F# 创建一个 ASP.NET MVC 应用程序。
当我尝试从浏览器运行它时,我遇到了一个包含以下内容的 YSOD:
[ArgumentNullException: 值不能 为空。参数名称:字典]
System.Collections.Generic.Dictionary2..ctor(IDictionary2 字典,IEqualityComparer`1 比较器)+12700827
System.Web.Compilation.CompilationUtil.CreateCodeDomProviderWithPropertyOptions(类型 codeDomProviderType) +84
System.Web.Compilation.CompilationUtil.CreateCodeDomProviderNonPublic(类型 codeDomProviderType) +16
System.Web.Compilation.AssemblyBuilder..ctor(CompilationSection compConfig,ICollection 引用的程序集,编译器类型 编译器类型,字符串 outputAssemblyName) +469
System.Web.Compilation.CompilerType.CreateAssemblyBuilder(CompilationSection compConfig,ICollection 引用的程序集,字符串 生成文件目录,字符串 outputAssemblyName) +127
System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() +675 System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +46 System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(布尔 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>
对纠正这个错误有什么想法吗?
【问题讨论】:
标签: asp.net-mvc model-view-controller iis f# codedom