我刚刚尝试将MVC3应用程序部署到我们的IIS7托管环境中,但是我正在使用以下例外:
无法加载类型 'Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility' 从装配 “Microsoft.Web.Infrastructure, 版本= 1.0.0.0,文化=中立, 公钥= 31bf3856ad364e35' 。 描述:未处理的异常 在执行期间发生 当前的网络请求。请查看 堆栈跟踪以获取更多信息 错误及其来源 代码。
异常详细信息: System.TypeLoadException:无法 加载类型 'Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility' 从装配 “Microsoft.Web.Infrastructure, 版本= 1.0.0.0,文化=中立, 公钥= 31bf3856ad364e35' 。
有什么建议吗?
由于我已在Web服务器本身安装了ASP.Net网页和MVC3,因此该应用程序未被bin部署。
答案 0 :(得分:50)
这是因为Microsoft.Web.Infrastructure
不在您的GAC中。您需要将此引用添加到项目中。右键单击引用并转到属性,然后将copy设置为local。
输出(忽略Ninject和NCU):
答案 1 :(得分:9)
在执行参考清理后,它会删除Microsoft.Web.Infrastructure
,但不会从packages.config文件中删除。在尝试使用Package Manager Console
再次添加它之后,Visual Studio说它已经安装了,因为它被删除了,所以它是假的。
然后我删除了packages.config
文件
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
再次运行命令
PM> Install-Package Microsoft.Web.Infrastructure
在此之后,现在它可以正常工作。
答案 2 :(得分:5)
Microsoft.Web.Infrastructure
现在是一个Nuget包,它可以添加到您的项目中以启用bin目录部署 -
答案 3 :(得分:2)
确保服务器上的根web.config文件(位于此处:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config
)具有以下条目:
<configuration>
<location allowOverride="true">
<system.web>
<fullTrustAssemblies>
<add
assemblyName="Microsoft.Web.Infrastructure"
version="1.0.0.0"
publicKey="[bunch of letters and numbers]"
/>
如果它丢失了,那就意味着有人搞砸了你的.NET 4安装。
答案 4 :(得分:0)
下载Microsoft.Web.Infrastructure.dll并将其复制到您的bin文件夹中!