'Owin.IAppBuilder' não contém uma definição para 'MapSignalR'
Pergunta
Erro
'Owin.IAppBuilder' não contém uma definição para 'MapSignalR' e nenhum método de extensão 'MapSignalR' aceitando um primeiro argumento do tipo 'Owin.IAppBuilder' foi encontrado (está faltando uma diretiva using ou uma referência de montagem?)
Código
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}
Qualquer ajuda seria muito apreciada...
Atualizar
sinalR versão 2.0.3
Microsoft Owin versão 2.0.2
Owin versão 1.0.0
Visual Studio 2012
Solução
Instale apenas esta pepita:
Pacote de instalação Microsoft.AspNet.WebApi.OwinSelfHost
Outras dicas
Finalmente consegui resolvê-lo adicionando sinalR dependências antes de adicionar signalR de pacotes NuGet
Etapas que segui:
- Adicionado Microsoft.Owin
//version 2.0.1
- Adicionado Microsoft.Owin.Security
//version 2.0.1
- Adicionado Microsoft Asp.Net SignalR
A razão pela qual descobri foi um problema com version 2.0.2
de Microsoft.Owin e Microsoft.Owin.Security e então adicionando uma classe chamada Startup.cs
com o seguinte código:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(webApp.Startup))]
namespace webApp
{
public static class Startup
{
public static void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
Adicionando diretamente Microsoft Asp.Net SignalR
do NuGet adiciona version 2.0.2 of Microsoft.Owin and Microsoft.Owin.Security
o que cria o problema.
Espero que ajude alguém...!!
Update-Package Owin -Reinstall
funcionou para mim
Instale o pacote Nuget: Microsoft.AspNet.Identity.Owin
Usando MVC5, insira seu arquivo Startup.cs.
Adicionar IAppBuilder appBuilder
para Configure()
:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IAppBuilder appBuilder)
{
Então, sob
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
adicionar appBuilder.MapSignalR();
O projeto mvc vazio do Asp.Net 5 pronto para uso cria algo parecido com isto
using Microsoft.Owin;
using Owin;
namespace DeadlyChat
{
public class Startup
{
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app)
{
app.MapSignalR();
}
}
}
Demorei um pouco para perceber que Configure deveria ser Configuration e IApplicationBuilder precisa ser IAppBuilder.Também retirei a anotação assembly acima do namespace.
Acabei desistindo de tentar usar o Asp.Net 5 e não consegui fazê-lo funcionar.Voltei para 4.6 e tudo funcionou bem.Segui este passo a passo http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr
Eu tenho esse mesmo problema.Acontece que meu arquivo .csproj tem a primeira linha:
O projeto ToolsVersion="12.0" não corresponde aos meus outros arquivos.Alterei para:
Ferramentas de ProjetoVersão="14.0"
e não há mais problemas de compilação.