Error Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

85

I have a small web application. Which was working fine until I added two genericHandler in my application.

I have made the following changes for the http handler

 <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.

I am using asp.net4.0 and C#. I am not using MVC
On local host it is working fine.
But when I am hosting the published code it is giving me the above error.

Stack Trace:-

[FileNotFoundException: 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.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register() +0

[InvalidOperationException: The pre-application start initialization method Start on type System.Web.Http.WebHost.PreApplicationStartCode threw an exception with the following error message: 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..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods() +465 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve

[HttpException (0x80004005): The pre-application start initialization method Start on type System.Web.Http.WebHost.PreApplicationStartCode threw an exception with the following error message: 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..] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4866485

asp.net
asked on Stack Overflow Oct 1, 2012 by शेखर • edited Nov 25, 2013 by Fredrik Hedblad

13 Answers

186

It appears that Microsoft.Web.Infrastructure.dll is not being installed in the GAC, even if .net (4.0 or 4.5 or other) are installed successfully on Windows Server. On localhost (typically Windows client), it seems like it is being in the GAC when the tools/platform (Visual Studio etc.) are installed.

As one possible fix, please try the following:

  1. Run the following command in the Package Manager Console. (If you are using Visual Studio, this can be reached via menu options "Tools --> Library Package Manager --> Package Manager Console:)

    PM> Install-Package Microsoft.Web.Infrastructure
    

    You will see the following messages if it is successfully installed.

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
    
  2. You will notice that Microsoft.Web.Infrastructure.dll has now been added as a Reference (can be seen in the references folder of your project in in Solution Explorer)

  3. If you look at the properties of this reference you will notice that "Copy Local" has been set to "True" by default.

  4. Now when you "Publish " your project, Microsoft.Web.Infrastructure.dll will be deployed.

answered on Stack Overflow Oct 2, 2012 by rockyb • edited Aug 6, 2015 by gdoron
19

I installed MVC4 via WPI and it helped me.

answered on Stack Overflow Dec 21, 2012 by Alex Shyba
11

I had the same problem. When I tried the accepted answer (rockyb), I got the message that the package was already installed and assigned to my project. When I checked the references list, it was NOT referenced, however.

The Microsoft.Web.Infrastructure was installed in my solution's packages folder. Instead of using NuGet to add the package, I just used the Add Reference option. On the left side of the pop-up window, I chose Browse, and then pressed the Browse button on the bottom of the window. I navigated to the packages folder under the folder that my solution was in, then drilled down to the ...\mysolution\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40 and clicked on the Microsoft.Web.Infrastructure.dll. After clicking OK, the package showed up in my References list. I used the Web Deploy Package option to deploy my website and everything worked.

answered on Stack Overflow Aug 18, 2015 by Glenn Gordon
7

Why not copy Microsoft.Web.Infrastructure.dll file manually to the server BIN folder. This works for. My project is VS2010 Website.

This file can be located:

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

Just copy and paste it in the BIN folder.

You probably need to include this in the web.config if you don't have it already

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

Reference: http://thedeveloperblog.com/

answered on Stack Overflow Apr 22, 2016 by BenW • edited May 20, 2016 by BenW
6

I found the problem. Instead of adding a class (.cs) file by mistake I had added a Web API Controller class which added a configuration file in my solution. And that configuration file was looking for the mentioned DLL (Microsoft.Web.Infrastructure 1.0.0.0). It worked when I removed that file, cleaned the application and then published.

answered on Stack Overflow Oct 3, 2012 by शेखर • edited Jul 18, 2013 by Clarice Bouwer
5

After installing Microsoft.Web.Infrastructure through Nuget-Package Manager

PM> Install-Package Microsoft.Web.Infrastructure

Copy the Microsoft.Web.Infrastructure.dll manually from the Nuget-Package folder on your web application and then paste it in your bin folder of your web application deployed on the web server.

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

It worked for me.

answered on Stack Overflow Feb 4, 2016 by Gokulnath • edited Feb 5, 2016 by Ajay2707
3

Update-Package -reinstall Microsoft.Web.Infrastructure didn't work for me, as I kept receiving errors that it was already installed.

I had to navigate to the Microsoft.Web.Infrastructure.1.0.0.0 folder in the packages folder and manually delete that folder.

After doing this, running Install-Package Microsoft.Web.Infrastructure installed it.

Note: CopyLocal was automatically set to true.

answered on Stack Overflow Sep 6, 2017 by contactmatt
0

I had the same problem and the "Microsoft.Web.Infrastructure.dll" appeared to be missing. I have tried few advises and installed MVC`s etc. and nothing helped. The solution was to install "Web Services Enhancements (WSE) 1.0 SP1 for Microsoft .NET" which includes Microsoft.Web.Infrastructure.dll. Available at: http://www.microsoft.com/en-gb/download/details.aspx?id=4065

answered on Stack Overflow Jul 16, 2015 by Zly-Zly
0

I had the same problem. I tried installing Visual Studio 2010 SP1 but it didn't worked.

Finally I get Microsoft.Web.Infrastructure.dll from the colleague. You can find the dll into your friends PC where the project is perfectly working. Try to search dll into Temp/Temporary ASP.NET Files. Go to Temp using %temp% into run window.

After getting dll into your pc, just add reference to your project and it will work.

answered on Stack Overflow Jul 31, 2015 by Ankitkumar Bhatt
0

Republishing the site fixed the issue for me.

answered on Stack Overflow Nov 7, 2017 by PhillyNJ
0

Was facing the same issue and unfortunately nothing here was working. Finally, I came across this link: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/

Turns out the solution is sort of dumb: set copy-local for the microsoft.web.infrastructure dll to False, then set it back to True.

By the way, I think what is happening is that there are two versions of the microsoft.web.infrastructure dll, one that is pre-installed in the GAC, and another one that is now a nuget package. I think one is masking the other, hence causing issues. In my particular case, on my build server, I need it to be copied over to a folder (this folder is then zipped and sent off to deployment). I guess the system had a copy locally and just thought "nah, it'll be fine"

0

I have a files only website. Added MVC 5 to webforms application (targeting net45). I had to modify the packages.config

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

to

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

in order for it to startup on local box in debug mode (previously had the top described error). Running VS 2017 on Windows 7...opened through File > Open > Web Site > File (chose root directory outside of IIS).

answered on Stack Overflow Jan 24, 2018 by Beau
0

I had the same problem after upgrading a bunch of NuGet packages.
I have tried all kinds of deleting, cleaning, resintalling described here and beyong to no avail. The references did not have Microsoft.Web.Infrastructure despite the NuGet manager showed it was installed.

The problem was solved by replacing:

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

with

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

in packages.config. The culprit is apparently "net45".

answered on Stack Overflow Feb 16, 2019 by Hong

User contributions licensed under CC BY-SA 3.0