WebGrease error on Styles.Render call in _Layout.cshtml in Mvc4 - css

I'm trying to add bundling to my Mvc4 web project. The steps I took:
Added a reference to my project to System.Web.Optimization
Added #Styles.Render("~/Content/css") within <head> of my _Layout.cshtml
Added BundleConfig.RegisterBundles(BundleTable.Bundles); to Global.asax.cs
Added BundleConfig.cs to my App_Start folder with bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); within RegisterBundles(...) method
Added a simple site.css within my Content folder.
The error that I get on the line from step #2 above is Could not load file or assembly 'WebGrease, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Am I missing a DLL reference or something? Note that I started originally from a blank Mvc4 project.

Over the last day or so I was having this issue too but I figured out a solution. Basically you need to just update "webgrease".
Here's what I did to update webgrease:
right click your project solution in your solution explorer.
Click "Manage NuGet Packages for Solution"
Go to the updates section on the left
Search "WebGrease"
Then update "WebGrease"
This worked for me when I built my solution.

I had the same problem after having added ASP.NET MVC 5 to my old ASP.NET web application, running WebForms. I want to add new features and build them on the MVC platform, so it is important that I get MVC and the traditional web application to run side by side. I'm writing this answer here because all the solutions I have found on stackoverflow and other places, including the solution selected to the topic you're reading now, didn't help me. Maybe my findings will help someone out there...
When I added MVC 5 to the web application project, it installed a bunch of references, for example System.Web.Mvc, System.Web.Razor, etc. The NuGet package called Microsoft.AspNet.Web.Optimization was also installed, which has a reference to WebGrease; the reference you and I had problems with.
The version of the Optimization dll that was installed in my web project, is Microsoft.AspNet.Web.Optimization 1.1.3, which is the latest version as of right now. WebGrease version 1.5.2 comes with it.
The funny thing is that the error message I got when executing the #Styles.Render("~/Content/css") statement in _Layout.cs, referred to WebGrease version 1.5.1. I have no idea where it got the 1.5.1 version from, because 1.5.2 was installed in my web project. I tried uninstalling WebGrease and reinstalling, tried upgrading WebGrease to the latest version (1.6.5135). I made certain that none of these dlls were installed in the GAC (which they weren't). I deleted all temporary files in "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\", but all to no avail.
I used the program called Fuslogvw.exe to log all binding information when I ran my web application, in the hope that I would spot a logical reason for why my application insisted on trying to load an old, non-existing version of WebGrease when running my application. Interestingly, the log's output showed me what the application was doing, but unfortunately didn't tell me why. The log told me that despite me having installed Microsoft.AspNet.Web.Optimization version 1.1.3 with WebGrease version 1.5.2, it tried to load Microsoft.AspNet.Web.Optimization version 1.1.0.0, which also comes with an older version of WebGrease. Why it did this? I have no idea, as I've never added Optimization to any project on my PC before.
My solution was to remove both Microsoft.AspNet.Web.Optimization and WebGrease (in that order), and then run the following command in Package Manager Console to install Microsoft.AspNet.Web.Optimization version 1.1.0:
Install-Package Microsoft.AspNet.Web.Optimization -Version 1.1.0
This resulted in WebGrease version 1.3.0 being installed, which didn't cause any problems when loading my MVC razor view which uses the _Layout.cshtml page.
For those of you who are interested: below you can see the output from the log produced by Fuslogvw.exe, where it clearly states that it tried to load the non-existing 1.1.0 version of Optimization:
*** Assembly Binder Log Entry (26.11.2018 # 13:19:59) ***
The operation failed.
Bind result: hr = 0x80131040. No description available.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Projects/MyProject/Web/
LOG: Initial PrivatePath = C:\Projects\MyProject\Web\bin
LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\myproject\1db399c5
LOG: Cache Base = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\myproject\1db399c5
LOG: AppName = 3f7f1cb1
Calling assembly : System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Projects\MyProject\Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: WebGrease, Version=1.5.1.25624, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/ipmvcang/1db399c5/3f7f1cb1/WebGrease.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/ipmvcang/1db399c5/3f7f1cb1/WebGrease/WebGrease.DLL.
LOG: Attempting download of new URL file:///C:/Projects/MyProject/Web/bin/WebGrease.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Projcets\MyProject\Web\bin\WebGrease.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: The assembly reference did not match the assembly definition found.
ERR: Setup failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Related

Assembly manager - All probing URLs attempted and failed

I have a VirtualMerchant project which is dependent on SysAuto.Web.Payment project.
Both VirtualMerchant and the Web.Payment project, once built, are version 2.0.1
However, from the assembly binding log viewer, we can see that the assembly loader is looking for SysAuto.Web.Payment Version=2.0.0.0
I have spent hours trying to figure out why it is looking for version 2.0.0 instead of going with 2.0.1. Or alternatively, why would the (vs 2013 ide) build would do a version 2.0.1, instead of a 2.0.0.
How am I saying these numbers. I click on the references, from the VirtualMerchant project, then click on the Web.Payment project, and on the properties, it shows version 2.0.0. Then when I go to the debug folder, reach the Web.Payment project dll, right click to Details, it shows 2.0.1.
Now, I do not even know if I am interpreting the issue correctly based on the log below.
It is hard for me to interpret this.
*** Assembly Binder Log Entry (5/3/2021 # 3:56:48 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable C:\Program Files (x86)\IIS Express\iisexpress.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = com.clairs.providers.VirtualMerchant
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: com.clairs.providers.VirtualMerchant | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///C:/develop/gitrepos/CDT/egovern/SysAuto.egovern.Web/Source/
LOG: Initial PrivatePath = C:\develop\gitrepos\CDT\egovern\SysAuto.egovern.Web\Source\bin
LOG: Dynamic Base = C:\Users\sakg\AppData\Local\Temp\Temporary ASP.NET Files\root\1df0e490
LOG: Cache Base = C:\Users\sakg\AppData\Local\Temp\Temporary ASP.NET Files\root\1df0e490
LOG: AppName = 68c4ab8d
Calling assembly : SysAuto.Web.Payment, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\develop\gitrepos\CDT\egovern\SysAuto.egovern.Web\Source\web.config
LOG: Using host configuration file: C:\Users\sakg\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/sakg/AppData/Local/Temp/Temporary ASP.NET Files/root/1df0e490/68c4ab8d/com.clairs.providers.VirtualMerchant.DLL.
LOG: Attempting download of new URL file:///C:/Users/sakg/AppData/Local/Temp/Temporary ASP.NET Files/root/1df0e490/68c4ab8d/com.clairs.providers.VirtualMerchant/com.clairs.providers.VirtualMerchant.DLL.
LOG: Attempting download of new URL file:///C:/develop/gitrepos/CDT/egovern/SysAuto.egovern.Web/Source/bin/com.clairs.providers.VirtualMerchant.DLL.
LOG: Attempting download of new URL file:///C:/develop/gitrepos/CDT/egovern/SysAuto.egovern.Web/Source/bin/com.clairs.providers.VirtualMerchant/com.clairs.providers.VirtualMerchant.DLL.
LOG: Attempting download of new URL file:///C:/Users/sakg/AppData/Local/Temp/Temporary ASP.NET Files/root/1df0e490/68c4ab8d/com.clairs.providers.VirtualMerchant.EXE.
LOG: Attempting download of new URL file:///C:/Users/sakg/AppData/Local/Temp/Temporary ASP.NET Files/root/1df0e490/68c4ab8d/com.clairs.providers.VirtualMerchant/com.clairs.providers.VirtualMerchant.EXE.
LOG: Attempting download of new URL file:///C:/develop/gitrepos/CDT/egovern/SysAuto.egovern.Web/Source/bin/com.clairs.providers.VirtualMerchant.EXE.
LOG: Attempting download of new URL file:///C:/develop/gitrepos/CDT/egovern/SysAuto.egovern.Web/Source/bin/com.clairs.providers.VirtualMerchant/com.clairs.providers.VirtualMerchant.EXE.
LOG: All probing URLs attempted and failed.

Alachisoft.NCache.Web.SessionState.NSessionStoreProvider can't find protobuf-net

I've downloaded the open source edition of ncache and i've followed the instructions at http://www.alachisoft.com/resources/docs/ncache/help/aspnet-session-state-provider.html?mw=Mzk2&st=MQ==&sct=MTk4&ms=QwAAEAAAIAAAAQACATgIAhA=
to configure my website to put the session state in ncache.
However, i get this error hitting the site.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Could not load file or assembly 'protobuf-net, Version=1.0.0.282, Culture=neutral, PublicKeyToken=257b51d87d2e4d67' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source Error:
Line 136:
Line 137:
Source File: C:\inetpub\wwwroot\xxxx\web.config Line: 138
Assembly Load Trace: The following information can be helpful to determine why the assembly 'protobuf-net, Version=1.0.0.282, Culture=neutral, PublicKeyToken=257b51d87d2e4d67' could not be loaded
I'm not sure where to find that dll or why it can't be loaded? I tried using nuget to install protobuf-net but there is no 1.0.0 version and the recent version does not fix the problem when i copy it to the bin folder.
Randy
Turns out the issue was that you need NCache installed on the web servers too, in addition to the cache servers. This is a better page to follow if you are just starting out with NCache for sessionState.
http://www.alachisoft.com/resources/docs/ncache/ncache-session-guide.pdf

Application cannot load Microsoft.SqlServer.Types Version 13

I am having a problem that many people have had before but none of the existing answers seem to work for me.
When I deploy my ASP.NET project I get an error in the event log saying
Could not load file or assembly 'Microsoft.SqlServer.Types, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
To try to rectify this I installed the Nuget package:
PM> Install-Package Microsoft.SqlServer.Types
This didn't work and I get the same error. So then I followed the readme and used Loader.cs to load the files. Again, same problem. What is happening and why don't the usual solutions fix it?
One thing I did note is that my Microsoft.SqlServer.Types.dll is version 11 not 13? If it makes any difference our database is SqlServer 2016 and our machine is running Windows Server 2008
The way I solved this was to to set the SqlServerTypesAssemblyName in my app. I currently set it in my EntityContext constructor [that inherits off DbContext] to ensure its always set
SqlProviderServices.SqlServerTypesAssemblyName
= "Microsoft.SqlServer.Types, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";
Note your version may want to be different.
Make sure you are reference the correct version of assembly.
If not add manually.
Once the nuget package is installed you can ensure that the dll reference property is set to 'copy local = true'

Error "Unable to load requested types" when uploading DD4T.Templates.dll using TcmUploadAssembly

Trying to reupload the DD4T.Templates.dll into Tridion 2011 SP1 using the TcmUploadAssembly in the DD4T Tridion Tools folder - I've made sure the necessary DLLs are uploaded - DD4T.ContentModel.Contracts.dll, DD4T.ContentModel.dll, DD4T.Templates.Base.dll - but I keep getting "Error: Unable to load one more of the requested types".
Checking the Fusion log, I can see the following binding problem:
LOG: DisplayName = TcmUploadAssembly.XmlSerializers, Version=5.4.0.509, Culture=neutral, PublicKeyToken=360aac4d3354074b, processorArchitecture=MSIL
(Fully-specified)
LOG: Appbase = file:///D:/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = TcmUploadAssembly.exe
Calling assembly : System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config.
LOG: Post-policy reference: TcmUploadAssembly.XmlSerializers, Version=5.4.0.509, Culture=neutral, PublicKeyToken=360aac4d3354074b, processorArchitecture=MSIL
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers/TcmUploadAssembly.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers.EXE.
LOG: Attempting download of new URL file:///D:/TcmUploadAssembly.XmlSerializers/TcmUploadAssembly.XmlSerializers.EXE.
LOG: All probing URLs attempted and failed.
No idea where this TcmUploadAssembly.XmlSerializers comes from?
There is a DD4T.ContentModel.XmlSerializers.dll in the build folder but this seems to be merged with others to form DD4T.Templates.merged.dll - but I've no idea what this is for.
Not sure where to start - is this a DD4T problem or a TcmUploadAssembly problem?
(I have tried the same steps with the TcmUploadAssembly in the Tridion 2011 SP1 install but got the same error, albeit for a newer TcmUploadAssembly.XmlSerializers, version 6.1.0.996)
Edit
Apologies for the confusion - I had added the DD4T assemblies into the GAC. My original post "I've made sure the necessary DLLs are uploaded" was misleading but I meant loaded into the GAC!
I'll check Mihai's point about registering with .NET 4 - it was late last night when I did this!
Version 5.4 is Tridion 2009. I don't think using TcmUploadAssembly from T2009 would work with T2011. So I definitely suggest using the latest TcmUploadAssembly (v6.1.0.966 for T2011SP1).
Have you registered the Templating DLLs DD4T.ContentModel.Contracts.dll, DD4T.ContentModel.dll and DD4T.Templates.Base.dll into the GAC on your TCM server? Just uploading them is not enough. Have a look at http://code.google.com/p/dynamic-delivery-4-tridion/wiki/40_Templates.
Also I see your error refers to .NET 2. Did you register the DLLs using .NET 4?
The recommended approach is to download the installer from https://code.google.com/p/dynamic-delivery-4-tridion/downloads/detail?name=DD4T-template-installer-1.31.zip.
This uploads DD4T.Templates.Merged.dll into Tridion, which includes the template DLL + all dependent DLLs merged together by ILMerge.
If you don't like ILMerge for whatever reason, you can put the following DLLs in the GAC:
DD4T.ContentModel.dll
DD4T.ContentModel.Contracts.dll
DD4T.Templates.Base.dll
DD4T.ContentModel.XmlSerializers.dll
You can get these DLLs by downloading the source code, opening the Dynamic Delivery Publishing.sln solution, and building it.

HttpHandlers x64 problem

I developed a .Net 3.5 x64 web application that includes a custom HttpHandler in the config:
<add path="*.class1" verb="GET" type="ClassLibrary1.Class1Handler"/>
This works when the platform target for ClassLibrary1 is set at x86.
However, when I set this to x64 I get the following error when I run web application starts (it compiles just fine):
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Could not load file or assembly 'ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Does this mean that a HttpHandler can be compiled at x86 only?
That doesn't make much sense to me.
Does anyone have an idea of what could be going on?
Edit 1:
The ClassLibrary1 project is just an empty class library project with a single HttpHandler added (which is also empty).
Edit 2:
I am also getting these warning messages when compiling, I am pretty sure they have something to do with this problem:
Assembly generation -- Referenced assembly 'mscorlib.dll' targets a different processor HttpTest
Edit 3:
I manually edited the project file to force references to the x64 assemblies, like this:
<Reference Include="$(Windir)\Microsoft.NET\Framework64\v2.0.50727\System.dll"/>
This does supress the above warning message, but the problem isn't resolved.
Thanks!
You probably compiled your assembly ClassLibrary1 with the attribute x86. Try to compile it with AnyCPU tag.
One of your dependent assemblies is compiled with the flag set to x86 rather than AnyCPU or x64
See this page for how to use the coreflags.exe to query the assebly in question

Resources