config file flagging as duplicate Exceptionless package - c#

Not sure what happened my project but when I tried to run it I got the error message Could not load file or assembly 'Exceptionless.Mvc' or one of its dependencies
Eceptionless.MVC is not used or referenced anywhere in my project I cant even find any text with Exceptionless......
So I used Nuget Manager to install the exceptionless.MVC package.
Now I get the error
`HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Config Error
There is a duplicate 'exceptionless' section defined `
The install of exceptionless.Mvc added the following to my web config
<section name="exceptionless" type="Exceptionless.ExceptionlessSection, Exceptionless" />
<exceptionless apiKey="API_KEY_HERE" />
<modules runAllManagedModulesForAllRequests="true">
<add name="ExceptionlessModule" type="Exceptionless.Mvc.ExceptionlessModule, Exceptionless.Mvc" />
</modules>
and the packages config was updated
<package id="Exceptionless" version="4.2.1982" targetFramework="net45" />
That is the only ref to exceptionsless/exceptionlessMVC in my project.
I am at a loss to what its look for with mvc exceptionless or where the duplicate sections are??
any help pls?

Issue was to do with a duplicate web config file stored in the IIS. Renaming that web config allowed the original to take priority removing any duplicate issues with exceptionless.

You should try removing the handler then adding it back in. Here is a similar example:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
You may need to comment out this part too.
<section name="exceptionless"....

Web.config is inheriting from Web.config from parent application. Also there is machine-wide web.config and machine.config.
1) If you application is on IIS and there is a parent application, check web.config of parent application
2) Check your machine-wide web.config and machine.config.
Assuming you're on .NET 4.0 and higher they're here:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
(for x32 bit application pool)
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
(for x64 bit application pool)

Related

How to remove WebDav from IIS, in .NET 5.0?

We have a Web API webservice site, built in .NET 4.5.2, that we're trying to move to .NET 5.0.
We ran into what seems to be a common issue - when we deploy the site to our staging environment, none of the PUT and DELETE methods work. When we test them using the generated Swagger UI, we get 500 errors.
Note - we do not see these errors running in IIS Express, through the VS2019 debugger.
We browse the web, of course, and find an answer:
How do you fix a 500 Server Error while running REST PUT or DELETE requests?
So we create a web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="WebDAV" />
</handlers>
<modules>
<remove name="WebDAVModule" />
</modules>
</system.webServer>
</configuration>
And that causes different problems.
We get HTTP 500 errors when we try to run the site in IIS Express through the VS2019 debugger, and
Running the site modifies the web.config.
The web.config now looks like:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="WebDAV" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<modules>
<remove name="WebDAVModule" />
</modules>
<aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />
</system.webServer>
</configuration>
Note the addition of aspNetCore.
So, here's the thing.
We need this to work both when deployed to IIS, and when run locally, and
We can't have source files that are partially generated, during the build. Our whole build-and-version-control system is built on the idea that there are files that contain code that developers write and there are files that are generated during the build. The former we save version control and the latter we do not. We can add web.config to our version control, but if we do we cannot have its contents changing during a build or run.
So, what do we do?
How do we get this to work when deployed in IIS and when run in IIS Express when debugging?
And how do we deal with the web.config being modified during a debug run?
These sort of issues seem to show up for a great many reasons, and I can't pretend to have found an answer to all of them.
In this particular case, the problem was that VS was inserting bad elements into the web.config.
Adding the <handlers/> and <modules/> elements to remove the WebDAV caused VS to insert an <aspNetCore/> element:
<aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />
And the element that was inserted lacked the required processPath= attribute.
<aspNetCore processPath="dotnet" stdoutLogEnabled="false" hostingModel="InProcess" />
It is better to turn off WebDAV Publishing.
To do that :
Open "Turn Windows Features on or off". Now inside Internet Information Services\World Wide Web Services\Common HTTP Features\WebDAV Publishing. Uncheck it and click OK.

Is it possible to pass environment variables to an asp .net core application via IIS without saving them to the web.config?

I'm looking for a way to pass data to an asp.net core web application as environment variables.
You can do this via IIS via:
Management > Configuration Editor > environment variables > ...
However, that just writes the values into the web.config for the project:
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\Foo.exe" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="Foo" value="Bar" />
<environmentVariable name="FooBar" value="1" />
</environmentVariables>
</aspNetCore>
</system.webServer>
That's lovely and all, but unfortunately also quite useless, because if I have three websites, pointing to the same published folder, they now all share the same 'environment' variables.
...
Not really environment variables.
More like appsettings.
I looked into 'application settings' in IIS, but since kestrel runs in its own process, the code for the application instances is not managed code and that doesn't work either (note that using 'No managed code' or '...whatever CLR version here' in the application pool settings is irrelevant for .net core apps).
So, if you have multiple sites configured in IIS for an app, pointing to the same folder, is there any way to pass different configuration to each site instance from IIS?
I believe everything that you change in IIS is saved to the web.config. This is so that as a developer you don't actually have to set up the same configuration on every server the app is deployed to. Unfortunately this means that no, there is no way to do what you are asking.
You will need to publish to three separate folders so you can have three web.config files.

From where can I get the Mini-Profiler-Resource folder needed by MiniProfiler?

I'm trying to use miniProfiler in my MVC 4 project. But after installing both, miniProfiler and miniProfiler.Mvc4 and trying to run my project, MiniProfiler is not loading. In the console log show that it is trying to get a file from a folder named "mini-profiler-resource" but I dont have nothing named that in my project.
Am I missing to install something?
It is not an actual folder - rather it is a route that should be set up in MVC for you to access the resources.
Try adding the following to your web.config (per miniprofiler.com)
<system.webServer>
...
<handlers>
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
</handlers>
</system.webServer>

Installed glimpse attempting to access glimpse.axd and receive 404 error?

It is a simple as that I installed glimpse following this page. :
http://getglimpse.com/About/QuickStart
I then attempt to navigate to http://myApp/glimpse.axd and receive 404 error not found.
As you can see in the Quickstart there is this statement. :
If you get a "Page not found" when browsing to "/glimpse.axd" check the troubleshooting section in the FAQ.
There is nothing in the FAQ regarding this. I have skimmed this website and getGlimpse.com attempting numerous other configurations and nothing is working. Any one else run into this issue and fix it?
Tried this also. :
Glimpse for MVC3 module not found after NuGet install of Glimpse.MVC3
I encountered the same problem and in my case the solution was to add the following code to Application_Start() in the MvcApplication class:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Make sure you have the Glimpse module and handler registered in your web.config based on the web server you are using.
If you are using a site on IIS6, in IIS7.x classic pipeline mode or Visual Studio Development Server
<system.web>
<httpModules>
<add
name="Glimpse"
type="Glimpse.Core.Module, Glimpse.Core"
/>
</httpModules>
<httpHandlers>
<add
path="glimpse.axd"
verb="GET,POST"
type="Glimpse.Core.Handler, Glimpse.Core"
/>
</httpHandlers>
...
And if you are using IIS 7.x in integrated pipeline mode or IIS Express:
<system.webServer>
<modules>
<add
name="Glimpse"
type="Glimpse.Core.Module, Glimpse.Core"
preCondition="integratedMode"
/>
</modules>
<handlers>
<add
name="Glimpse"
path="glimpse.axd"
verb="GET,POST"
type="Glimpse.Core.Handler, Glimpse.Core"
preCondition="integratedMode"
/>
</handlers>
...
</system.webServer>
I had a multi-project solution and was installing it from the Package Manager Console. I found that installing it using the following command worked:
PM> Install-Package -ProjectName <MyProject> Glimpse.MVC4
Of course you need to replace <MyProject> with your own project name.
I have had a very similar problem, and none of these options helped me, but I did get it working. This is what I had to do:
I am using MVC 5, so make sure you have read the latest config for glimpse for the version you are using. I should have been using Glimpse.AspNet and not Glimpse.Core
My web config looks like this:
<handlers>
....
<remove name="Glimpse" />
<add name="Glimpse" path="glimpse.axd" verb="GET"
type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet"
preCondition="integratedMode" />
</handlers>
<modules>
....
<remove name="Glimpse" />
<add name="Glimpse"
type="Glimpse.AspNet.HttpModule, Glimpse.AspNet"
preCondition="integratedMode"/>
</modules>
I am using IIS Express, Vs2015 and for some reason my C:\Users\me\Documents\IISExpress\config\applicationhost.config got messed up, and had a special entry for Glimpse.
So I found and removed any entries with Glimpse in them (carefully, you might want to comment them out instead)
<application path="/Glimpse.axd" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="\path\to\extra\website" />
</application>
I think this may have happened from a really early version of glimpse been installed, and also something to do with the upgrade to MVC5, but not 100% sure why...
Hope this helps someone else.
In my case, the web app is not deployed in root, so the url is:
http://localhost:54026/MyApp/glimpse.axd
Very obvious, but I'll leave this answer as a reminder.
Install Glimpse.AspNet and it will fix the issue for you and also modify the web.config by adding the handler and module.

issue with Telerik_Web_UI_WebResource_axd

When I run my website, I get the following error message
Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'Telerik_Web_UI_WebResource_axd'
Here are the contents of web.config...
<httpHandlers>
<add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
</httpHandlers>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource"/>
</handlers>
</system.webServer>
If I comment out the handlers entry.. I get the following error message...
'~/Telerik.Web.UI.WebResource.axd' is missing in web.config. RadScriptManager requires a HttpHandler registration in web.config. Please, use the control Smart Tag to add the handler automatically, or see the help for more information: Controls > RadScriptManager
I am total at loss on how to fix this. I do not know how to use Smart Tag. I have googled, looked into SO, looked into Telerik site and can not find solution any where. I do not know if the problem is in my web.config, Virtual directory or where??? My colleagues have the same code base and web.config and it works for them.
EDIT
Here is my development machine setup...
Windows 7 Enterprise Service Pack 1 64 bit OS
Visual Studio 2010 Enterprise Service pack 1 IIS version 7.5
Please help.
The problem wont be in the IIS config; as the error message specifically refers to a Web.config file, so that's going to be in .Net
What happens if you comment out the httpHandlers entry rather then handlers ?
Edit: After looking at your web.config file, the only thing I can suggest is changing the format of the system.webServer.handlers.add part from
<add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource"/>
to:
<add name="Telerik.Web.UI.WebResource" path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" />
And that's because that's what Telerik suggest to be the best practice; If that doesn't work then I'm sorry but I'm out of ideas tonight, but please leave the question open, perhaps someone with a better idea will see it in the morning.

Categories

Resources