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

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.

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

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

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.

IIS cannot load global type despite of existing dll

I'm trying to get an application to run on an IIS 6.0 that I was assigned to support.
I copied all the source and binaries to the Inetput folder. The WebApp is running, but I get the error that tells me that the global type of the application could not be loaded.
How can I debug this? The namespace is correct, the DLL is present in the /bin/ folder of the application, and still the app cannot load it.
After turning on Fusion logging, I found this error file that concerns my global class;
*** Assembly Binder Log Entry (05.11.2012 # 08:45:30) ***
The operation failed.
Bind result: hr = 0x80131107. No description available.
Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusion.dll
Running under executable c:\windows\system32\inetsrv\w3wp.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = MyApplication
(Partial)
LOG: Appbase = file:///c:/inetpub/wwwroot/MyApplication
LOG: Initial PrivatePath = bin
LOG: Dynamic Base = C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\MyApplication\a1144233
LOG: Cache Base = C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\MyApplication\a1144233
LOG: AppName = 1ec25e47
Calling assembly : (Unknown).
===
LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: MyApplication
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/MyApplication/a1144233/1ec25e47/MyApplication.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/MyApplication/a1144233/1ec25e47/MyApplication/MyApplication.DLL.
LOG: Attempting download of new URL file:///c:/inetpub/wwwroot/MyApplication/bin/MyApplication.DLL.
LOG: Assembly download was successful. Attempting setup of file: c:\inetpub\wwwroot\MyApplication\bin\MyApplication.DLL
LOG: Entering download cache setup phase.
ERR: Error extracting manifest import from file (hr = 0x80131107).
ERR: Setup failed with hr = 0x80131107.
ERR: Failed to complete setup of assembly (hr = 0x80131107). Probing terminated.
What's going wrong there? The bin\MyApplication.DLL exists and is compiled correctly, so I don't see the problem...
Reproducing the solution from the comments...
Step 1 is to enable Fusion Logging to get a log of what was failing
This produced the log file that indicates that IIS was trying to launch the DLL under version 1.1 of the .Net Framework. The error then occurred when it tried to read the manifest of the dll.
This indicates that the dll was from a later version of the framework and so couldn't be loaded.

Binding Microsoft.Web.DynamicData assembly at runtime failing

I've got a project using DynamicData that was wrote by somebody else. Every time i try debbuging it, I get the message I've attached at the bottom
I've already tried deploying the DynamicData dll to GAC, and throwing it into the bin folder, chceking the assemblies full names, installing again VS SP1, and .NET Framework SP1, and chceking the logs in Fuslogvw.
I've run out of ideas at this point. Could anybody help me, or at least suggest a new direction of searching for the solution ? Thx in advance.
The error message I get :
=== Pre-bind state information ===
LOG: User = DOMAIN\user
LOG: DisplayName = Microsoft.Web.DynamicData
(Partial)
LOG: Appbase = file:///C:/AppBase/
LOG: Initial PrivatePath = C:/AppBase/bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:/AppBase/bin/web.config
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: The same bind was seen before, and was failed with hr = 0x80070002.
You might be able to use the AppDomain.AssemblyResolve event to learn more about the Assembly that's being requested. You can check that the version numbers and everything else match. If you have the dependency already loaded, then you can just return it from the event handler. I've included some sample code in this answer.

Resources