73
votes

I am working on an Asp.Net MVC 4 Application in which I am using SignalR 2.0.1 and I Mapped it using Owin Startup class and it worked fine at first.

All of a sudden when I tried to rebuild my app it said that the type are namespace IAppbuilder could not be found.

Following is my start up class

using Microsoft.Owin;
using Owin;
using WhiteBoardApp;

namespace WhiteBoardApp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

I have installed Owin package too, and for some reasons I could not find Owin Startup class so I just added a normal class and included all the references that are needed. May I know where I am making a mistake

9

9 Answers

149
votes

Try to use Package Manage Console and do

Update-Package Owin -Reinstall
27
votes

I was having similar issue. But instead Owin, problem was causing Microsoft.Owin, obviously

Update-Package Owin -Reinstall

Didn't work, neither did Update-Package Owin

BUT

Install-Package Microsoft.Owin

did work fine for me, thanks.

8
votes

The IAppBuilder interface is found under Owin package. Just add a reference in your class file:

using Owin;

And rebuild. Your project will pick this up.

I have no idea why VS didn't pick this up, but it didn't. Once I added this reference to my project, then everything fell into place.

4
votes

I encountered the same problem while building my project. Here are the steps that helped fix my problem:

  1. Go to Solution Explorer and look for your project
  2. Under your project, expand the References; You should see warnings on the problematic reference
  3. Right click References and open Manage NuGet Packages
  4. Search the name of problematic reference i.e. Microsoft.Owin; After loading it shows that it is already installed (It is, but it installed incorrectly. Checking the properties > version at step 2 shows 0.0.0.0)
  5. Check Force uninstall, even if there are dependencies on it
  6. Uninstall
  7. Install
  8. Build and run the project

Problems

Cannot install Microsoft.Web.Infrastructure because it already exists in the packages folder. Rolling back...

  1. Go to your project folder and look for packages
  2. Find the problematic package i.e. Microsoft.Web.Infrastructure
  3. Delete the folder
  4. Resume from step 7

Alternatives

Here are the alternatives I've read about to fix this kind of problem.

  • Clean and Rebuild Project / Solution
  • Restart Visual Studio
  • Restart PC

Good luck.

2
votes

My Visual Studio 2013 for some reason didn't realize that the references paths existed. The yellow exclamation mark in front of the references was shown for all the added packages. I checked ../packages/ but all files existed, i also opened the .csproj file which referenced the correct paths.

Closing and opening the solution returned quite a lot of errors, and could not load the projects included in the solution.

Restarting Visual Studio 2013 saved the day for some unexplained reason.

1
votes

My following using's equivalent in F# present a problem of hiding the IAppBuilder. It turns out that the Owin stipulation was being interpreted as an incomplete System.Web.Http.Owin reference, even though the Owin.dll providing the Owin namespace was referenced.

open System.Net.Http
open System.Web.Http
open Microsoft.Owin
open Owin

The problem was resolved by rearranging the usings as follows:

open Microsoft.Owin
open Owin
open System.Net.Http
open System.Web.Http

...granted, this may be a bug peculiar to the F# compiler and name conflicts are handle better in C# and elsewhere.

0
votes

In my case, I had moved around the project folders and the location of the vs solution file (.sln). Once I was done with re-adding the projects, there was a packages folder on the solution level and one was left in a project sub folder. This way, in that project, the relative package folder links in the .csproj file got messed up.

The reinstallation or other tips regarding the nuget package manager in this thread were helpful. I noticed, that after I reinstalled a few packages, in my git source code diff, the path of the packages folder was changed within the csproj file.

Before

<HintPath>packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>

After

<HintPath>..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>

So, if you run in the same issue and you have a lot of nuget packages, it might be easier to close the whole solution, open the csproj file(s) in a text editor like vscode and fix the relative links with search and replace. Then just save, close, reopen solution in VS and restore nuget packages. That should do the trick. (In any case, you should delete the local packages folder on the project level, so that the project really fails, if it does not get the right packages.)

0
votes

It's an ordering issue.

using Microsoft.Owin;
using Owin;

Leads to Microsoft.Owin to be defined first, then Owin is found under already imported Microsoft namespace. If you mouse over Owin of using Owin you should see it was resolved to Microsoft.Owin again and furthermore IDE will gray out using Owin as redundant unused reference.

Do:

using global::Owin;

Which clarifies for the compiler not to look for Owin under already defined namespaces (e.g. Microsoft. namespace).

-1
votes

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

Check for the visual studio you are using You can find the following comment

Note: If you are using Visual Studio 2012, the SignalR Hub Class (v2) template will not be available. You can add a plain Class called ChatHub instead.

Also Note: If you are using Visual Studio 2012, the OWIN Startup Class template will not be available. You can add a plain Class called Startup instead.