MVC3部署依赖问题

时间:2011-01-20 02:22:27

标签: asp.net-mvc deployment webserver asp.net-mvc-3

我刚刚尝试将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部署。

5 个答案:

答案 0 :(得分:50)

这是因为Microsoft.Web.Infrastructure不在您的GAC中。您需要将此引用添加到项目中。右键单击引用并转到属性,然后将copy设置为local。

Copy Local

输出(忽略Ninject和NCU):

alt text

答案 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目录部署 -

http://nuget.org/packages/Microsoft.Web.Infrastructure

答案 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文件夹中!