错误Microsoft.Web.Infrastructure,版本=1.0.0.0,区域性=中性,PublicKeyTo



我有一个小型web应用程序。在我的应用程序中添加了两个genericHandler之前,它一直运行良好

我对http处理程序做了以下更改

<system.web>
<authentication mode="Forms" >
<forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<!--Code Log Handler-->
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
<add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
<add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
</httpHandlers>
<customErrors mode="Off">
<error statusCode="404" redirect="Templates/PageNotFound.html" />
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<!--Code Log Handler-->
<add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
<!-- SMS SENDER-->
<add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
</handlers>
</system.webServer>
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

我使用的是asp.net4.0和C#我没有使用MVC
在本地主机上运行良好。
但当我托管已发布的代码时,它会给我上述错误。

堆栈跟踪:-

[FileNotFoundException:无法加载文件或程序集"Microsoft.Web.Infrastructure,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856a364e35"或其依赖项之一。系统找不到指定的文件。]System.Web.Http.WebHost.UppressFormsAuthRedirectModule.Register()+0

[InvalidOperationException:类型System.Web.Http.WebHost.PreApplicationStartCode上的应用程序启动前初始化方法start引发异常,并返回以下错误消息:无法加载文件或程序集"Microsoft.Web.Infrastructure,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856a364e35"或其依赖项之一。系统找不到指定的文件。]System.Web.Compilation.BuildManager.IInvokePreStartInitMethods(ICollection`1 methods)+1178830System.Web.Compilation.BuildManager.CallPreStartInitMethods()+465System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironment参数hostingParameters,PolicyLevel policyLeve

[HttpException(0x80004005):类型System.Web.Http.WebHost.PreApplicationStartCode上的应用程序启动前初始化方法start引发异常,并返回以下错误消息:无法加载文件或程序集"Microsoft.Web.Infrastructure,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"或其依赖项之一。系统找不到指定的文件。]System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文)+1169760System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文)+141System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文)+4866485

即使.net(4.0或4.5或其他版本)已成功安装在Windows Server上,GAC中似乎也没有安装Microsoft.Web.Infrastructure.dll。在localhost(通常是Windows客户端)上,当安装工具/平台(Visual Studio等)时,它似乎就在GAC中。

作为一种可能的解决方案,请尝试以下操作:

  1. 在Package Manager控制台中运行以下命令。(如果您使用的是Visual Studio,可以通过菜单选项"Tools"-->Library Package Manager-->Package Manager Console:)

    PM> Install-Package Microsoft.Web.Infrastructure
    

    如果安装成功,您将看到以下消息。

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
    
  2. 您会注意到Microsoft.Web.Infrastructure.dll现在已被添加为引用(可以在解决方案资源管理器中的项目的引用文件夹中看到)

  3. 如果查看此引用的属性,您会注意到">复制本地"已默认设置为">True

  4. 现在,当您"发布"项目时,将部署Microsoft.Web.Infrastructure.dll

我通过WPI安装了MVC4,它帮助了我。

我也遇到了同样的问题。当我尝试接受的答案(rockyb)时,我得到的消息是包已经安装并分配给我的项目。然而,当我查看参考文献列表时,它并没有被引用。

Microsoft.Web.Infrastructure已安装在我的解决方案的软件包文件夹中。我没有使用NuGet来添加包,而是使用了"添加引用"选项。在弹出窗口的左侧,我选择了"浏览",然后按下窗口底部的"浏览"按钮。我导航到解决方案所在文件夹下的packages文件夹,然后深入到。。。\mysolution\packages\Microsoft.Web.Infrastructure 1.0.0.0\lib\net40,然后单击Microsoft.Web.Infrastructure.dll。单击"确定"后,该包显示在我的"引用"列表中。我使用了Web部署包选项来部署我的网站,一切都正常。

为什么不手动将Microsoft.Web.Infrastructure.dll文件复制到服务器BIN文件夹中。这适用于。我的项目是VS2010网站。

该文件可以定位:

C: \Program Files(x86)\Microsoft ASP.NET\ASP.NETMVC 4\Packages\Microsoft.Web.Infrastructure 1.0.0.0\lib\net40

只需将其复制并粘贴到BIN文件夹中即可。

如果你还没有,你可能需要将其包含在web.config中

<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>

参考:http://thedeveloperblog.com/

我发现了问题。我没有错误地添加(.cs)类文件,而是添加了Web API Controller类,它在我的解决方案中添加了一个配置文件。该配置文件正在查找上述DLL(Microsoft.Web.Infrastructure1.0.0.0)。当我删除该文件,清理应用程序,然后发布时,它就工作了。

通过Nuget-Package Manager安装Microsoft.Web.Infrastructure后

PM> Install-Package Microsoft.Web.Infrastructure

从web应用程序上的Nuget-Package文件夹手动复制Microsoft.Web.Infrastructure.dll,然后将其粘贴到web服务器上部署的web应用程序的bin文件夹中。

packages\Microsoft.Web.Infrastructure 1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll

它对我有效。

Update-Package -reinstall Microsoft.Web.Infrastructure对我不起作用,因为我一直收到已经安装的错误。

我必须导航到软件包文件夹中的Microsoft.Web.Infrastructure 1.0.0.0文件夹,然后手动删除该文件夹。

完成此操作后,运行Install-Package Microsoft.Web.Infrastructure安装了它。

注:CopyLocal已自动设置为true。

有时需要强制删除包,然后重新安装它对我有用。尝试删除包

Uninstall-Package Microsoft.Web.Infrastructure -force

然后重新安装

Install-Package Microsoft.Web.Infrastructure

我遇到了同样的问题,"Microsoft.Web.Infrastructure.dll"似乎不见了。我尝试了一些建议,安装了MVC等,但都无济于事。解决方案是安装"适用于Microsoft.NET的Web服务增强(WSE)1.0 SP1",其中包括Microsoft.Web.Infrastructure.dll。网址:http://www.microsoft.com/en-gb/download/details.aspx?id=4065

我也遇到了同样的问题。我尝试安装Visual Studio 2010 SP1,但没有成功。

最后,我从同事那里得到了Microsoft.Web.Infrastructure.dll。你可以在你朋友的电脑上找到dll,这个项目正在完美地运行。尝试将dll搜索到临时/临时ASP.NET文件中。在运行窗口中使用%Temp%转到Temp。

将dll放入你的电脑后,只需添加对你的项目的引用,它就会工作。

重新发布网站为我解决了这个问题。

面临同样的问题,不幸的是,这里什么都不起作用。最后,我看到了这个链接:https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/

事实证明,这个解决方案有点愚蠢:将microsoft.web.infrastructure dll的本地副本设置为False,然后将其设置回True。

顺便说一句,我认为现在有两个版本的microsoft.web.infrastructure dll,一个是预装在GAC中的,另一个现在是nuget包。我认为其中一个掩盖了另一个,从而引发了问题。在我的特定情况下,在我的构建服务器上,我需要将它复制到一个文件夹中(然后压缩该文件夹并将其发送到部署)。我想系统在本地有一份副本,只是想"不,会没事的">

我有一个仅限文件的网站。将MVC 5添加到web表单应用程序中(针对net45)。我不得不修改软件包。配置

package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45"

package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" developmentDependency="true"

以便它在调试模式下在本地框上启动(之前有上面描述的错误)。在Windows 7上运行VS 2017…通过文件>打开>网站>文件打开(选择IIS之外的根目录)。

我在升级了一堆NuGet包后也遇到了同样的问题
我试过这里和beyong描述的各种删除、清理、重新登录,都没有用。引用没有Microsoft.Web.Infrastructure,尽管NuGet管理器显示它已安装。

通过更换解决了问题

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

带有

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />

在packages.config中。罪魁祸首显然是"net45"。

Visual Studio 2022.net.4.8

我只是运行这个并解决

您可以使用nuget软件包管理器安装此dllPM>安装包Microsoft.Web.Infrastructure-版本1.0.0

相关内容

最新更新