HttpHandlers x64 problem - asp.net

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

Related

Azure Functions Errro - Could not load file or assembly System.Configuration.ConfigurationManager, Version=4.0.3.0

I am working on Azure Functions and these are created in .Net Core version 3.1 whereas the other libraries are written in .Net Framework 4.8. While executing the functions, I am getting following error -
System.Private.CoreLib: Exception while executing function: XXXXXX. System.Private.CoreLib: One or more errors occurred. (The type initializer for 'XXXXX' threw an exception.). XXXX.Service: The type initializer for 'XXXXX.Service.XXXXX' threw an exception. XXXX.Service: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
Suggestions would be appreciated.
You can work around the issue by adding the _FunctionsSkipCleanOutput to the project file.
<PropertyGroup>
<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
</PropertyGroup>
Make sure your package version exists. From this it seems that there is no package version in which you reported an error, check this link:
https://www.nuget.org/packages/System.Configuration.ConfigurationManager/5.0.0-preview.1.20120.5
Click Version History, and you will find:

Build failing on Teamcity

Trying to set up a build on Teamcity, never done this before so I haven't a clue what I'm at. It fails with the following error:
C:\Program Files\dotnet\sdk\2.1.4\Microsoft.Common.CurrentVersion.targets(2659,5): error MSB4062: The "Microsoft.Build.Tasks.ResolveComReference" task could not be loaded from the assembly Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
Can anybody help me with this? What does this mean and how do I fix it?
I suppose, you are using .net core build command which does not support this target.
Here is a workaround or just use MSBuild for VS2017. Here is a related thread about the issue: https://github.com/dotnet/cli/issues/9558

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'

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.

Moving to JSON.NET 4.0.3 broke my app

I have a Windows Phone 7.1 (Mango) application that was using JSON.NET 4.0.2.
I upgraded it to 4.0.3 and now I get all kinds of error.
A deserialized class that was working before is now throwing this error :
Could not load type 'System.Dynamic.IDynamicMetaObjectProvider' from assembly 'System.Core, Version=3.7.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC'.
I also make use of the Linq feature by using JArray and now I get this message:
{"Could not load type 'Newtonsoft.Json.Linq.JArray' from assembly 'Newtonsoft.Json, Version=4.0.3.0, Culture=neutral, PublicKeyToken=30AD4FE6B2A6AEED'."}
I tried cleaning the solution. I tried copying the DLLs one more time.
Any suggestions?
The problem is that Windows Phone 7.1 defaults to the Silverlight 4 build if no explicit Silverlight 4 WP build is specified. Silverlight 4 has features that aren't available on WP which is why this causes Json.NET to break.
This will be fixed in 4.0.5 by having the current Windows Phone 7.0 dll used for 7.1 but for now to fix the problem just change the dll reference to the Newtonsoft.Json.dll file in the sl3-wp directory.

Resources