Instalei o Visual Studio 2013 e, quando executo meu aplicativo, recebo o erro abaixo.
Não tenho idéia de onde devo inicializar esse objeto.
O que fazer?
Server Error in '/' Application.
The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.]
System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes() +101
System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) +63
System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext) +107
System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +233
System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +60
System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408
Isto é para AlumCloud
c#
.net
asp.net-mvc-routing
Preenchendo a pilha é o que eu faço
fonte
fonte
GlobalConfiguration.Configure(Action<HttpConfiguration> configurationCallback)
que chamará após o configurationCallback.Se você fizer isso no final do Application_Start, será tarde demais, como WebApiConfig.Register foi chamado.
A melhor maneira de resolver isso é usar o novo método de inicialização substituindo no Global.asax:
de
fonte
GlobalConfiguration.Configure(config => new WebApiConfig().Register(config));
Na verdade, eu recebi esse erro quando estava usando o roteamento de atributos na minha WebApi.
eu tinha
ao invés de
para minha rota e recebi esse erro. Eu simplesmente tinha perdido a chave de fechamento. Depois que o adicionei novamente, esse erro não ocorreu novamente.
fonte
Isso é antigo, mas é o primeiro resultado no google ao procurar esse erro. Depois de cavar bastante, consegui descobrir o que estava acontecendo.
Significado: se você é proveniente de um projeto Mvc existente, tudo o que você precisa fazer é:
OU
Indo Mais Fundo
HttpConfiguration.Configuration possui uma propriedade "Initializer" definida assim:
HttpConfiguration.EnsureInitialized () executa esta ação e define _initialized como true
HttpConfiguration.MapAttributeRoutes chama o método interno AttributeRoutingMapper.MapAttributeRoutes que define HttpConfiguration.Initializer
GlobalConfiguration.Configure executa o GuaranteInitialized imediatamente após invocar sua ação:
Não se esqueça, se você se deparar com uma parede, a fonte do asp.net estará disponível em http://aspnetwebstack.codeplex.com/SourceControl/latest
fonte
Eu tive um problema relacionado. Às vezes, chamar
GlobalConfiguration.Configure
várias vezes aciona esse erro. Como solução alternativa, coloquei toda a lógica de inicialização da configuração em um só lugar.fonte
Para mim, o problema era que eu estava tentando usar parâmetros nomeados para campos de string de consulta em minhas rotas:
Os campos de sequência de consulta são mapeados automaticamente para parâmetros e, na verdade, não fazem parte da definição de rota. Isso funciona:
fonte
Embora a resposta acima funcione se o caso não estiver definido, no meu caso essas coisas já foram definidas. O que foi diferente foi que, para uma das APIs que eu havia escrito, prefixo a rota com um /. Exemplo
.Alterar isso para
consertou para mim
fonte
HttpPrefix
decorador e, em seguida, para o meu ponto final indivíduo que tinha o decorador:[Route("/")]
. Simplesmente passando uma String vazia na rota, resolvia o problema.Se esse erro parecer "fora do nada" , ou seja, seu aplicativo estiver funcionando perfeitamente por algum tempo, pergunte-se: eu adicionei uma ação a um controlador ou alterei alguma rota antes de ver esse erro?
Se a resposta for sim (e provavelmente é), você provavelmente cometeu um erro no processo. Formatação incorreta, copie / cole uma ação e esqueça-se de garantir que os nomes dos terminais sejam únicos, etc. A sugestão que esse erro faz sobre como resolvê-lo pode enviar você latindo na árvore errada.
fonte
Ligar
antes
completa sua execução.
fonte
Eu recebi esse erro quando a versão do Newtonsoft.Json era diferente no meu projeto principal em comparação ao projeto auxiliar
fonte
Geralmente, obtém-se essa exceção quando os modelos de rota em "Roteamento de Atributos" não são adequados.
Por exemplo, obtive isso quando escrevi o seguinte código:
Na sintaxe das restrições de rota {parameter: constraint}, a restrição por padrão é do tipo string . Não há necessidade de mencionar explicitamente.
fonte
Comecei a receber esse erro um dia. Depois que alterei nosso aplicativo para ligar,
EnsureInitialized()
pude ver a causa raiz.Eu tinha um atributo personalizado, um filtro, em uma ação. Essa classe de atributo teve uma alteração de última hora feita no pacote NuGet em que vive.
Embora eu tenha atualizado o código e tudo compilado, o trabalhador local do IIS estava carregando uma DLL antiga e não encontrava um membro da classe durante a inicialização, lendo atributos em ações etc.
Por algum motivo (possivelmente devido ao pedido / quando nosso log é inicializado), esse erro não foi detectável, possivelmente deixando a WebAPI em um estado estranho, até que eu adicionasse
EnsureInitialized()
que capturou a exceção e a emergiu.Executar um bom
bin
eobj
limpo através de um script útil resolveu isso.fonte
No meu caso, criei o serviço da web no projeto A e o iniciei no Projeto B e recebi exatamente esse erro. O problema era que alguns arquivos .dll exigidos por A estavam ausentes na pasta de saída de compilação de B. Verifique se esses arquivos .dll estão disponíveis.
fonte
No meu caso, usei uma Entidade como parâmetro da minha ação que está faltando 'Esquema'.
Atributo errado:
Correto:
fonte