IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]InvalidOperationException was unhandled by user code

    testcs_dn发表于 2016-02-29 20:50:40
    love 0

    InvalidOperationException was unhandled by user code

    An exception of type 'System.InvalidOperationException' occurred in Microsoft.AspNet.Mvc.Core.dll but was not handled in user code


    Additional information: Unable to find the required services. Please add all the required services by calling 'IServiceCollection.AddMvc()' inside the call to 'IApplicationBuilder.ConfigureServices(...)' or 'IApplicationBuilder.UseMvc(...)' in the application startup code.



    用户代码中存在未处理的无效操作异常

    用户代码中存在没有处理的'System.InvalidOperationException'类型的异常出现在Microsoft.AspNet.Mvc.Core.dll中。

    附加信息: 无法找到所需的服务。请添加所有必需的服务通过调用'IServiceCollection.AddMvc()'在'IApplicationBuilder.ConfigureServices(...)'内部

    或'IApplicationBuilder.UseMvc(...)' 在应用程序启动代码中调用。

    产生异常的文件为“setup.cs”,代码如下:

    using Microsoft.AspNet.Builder;
    using Microsoft.AspNet.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Framework.DependencyInjection;
    
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
    	{
    		app.UseDefaultFiles();
    		app.UseStaticFiles();
    
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });   
        }
    
        public static void Main(string[] args) => WebApplication.Run(args);
    }
    
    在app.UseMvc处出错了,能看懂错误提示中的附加信息的话,应该已经大概明白了怎么处理。

    我们把出错的代码加个Try catch处理,得到具体的错误信息:


    发现和上面给出的附加信息是一样的。


    所以调试运行的时候产生未处理的异常,不要急着复制第一句错误信息“An exception of type 'System.InvalidOperationException' occurred in Microsoft.AspNet.Mvc.Core.dll but was not handled in user code”去搜索,对于类似 的错误这通常找到的答案都不是你想要的,因为这种类似的异常太多了。而应该去搜索附加信息Additional information: 后面的内容,那才是真实的错误信息。


    那么上面的这个问题怎么解决呢?

    啥也不说了,上代码:

    using Microsoft.AspNet.Builder;
    using Microsoft.AspNet.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Framework.DependencyInjection;
    
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();
        }
    
        public void Configure(IApplicationBuilder app)
    	{
    		app.UseDefaultFiles();
    		app.UseStaticFiles();
    
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
    
        }
    
        public static void Main(string[] args) => WebApplication.Run(args);
    }
    
    =========================分隔线====================================

    如果自己没有尽力,就没有资格批评别人不用心。开口抱怨很容易,但是闭嘴努力的人,更加值得尊敬。






沪ICP备19023445号-2号
友情链接