Parameter name: directoryVirtualPath

I am using Visual Studio Express 2012 RC.

  • If a create a blank "hello world MVC 4.5 project"
  • I Downgrade it to 4.0 so it is compatible with my host (Arvixe)
  • I publish it to the host.
  • And then i get this error message, i can find any information on it online.

    Server Error in '/' Application.
    
    Directory does not exist.
    Parameter name: directoryVirtualPath
    
    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.ArgumentException: Directory does not exist.
    Parameter name: directoryVirtualPath
    
    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: 
    
    
    [ArgumentException: Directory does not exist.
    Parameter name: directoryVirtualPath]
       System.Web.Optimization.Bundle.IncludeDirectory(String directoryVirtualPath, String searchPattern, Boolean searchSubdirectories) +357
       System.Web.Optimization.Bundle.Include(String[] virtualPaths) +287
       IconBench.BundleConfig.RegisterBundles(BundleCollection bundles) +75
       IconBench.MvcApplication.Application_Start() +128
    
    [HttpException (0x80004005): Directory does not exist.
    Parameter name: directoryVirtualPath]
       System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9160125
       System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +131
       System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +194
       System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339
       System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253
    
    [HttpException (0x80004005): Directory does not exist.
    Parameter name: directoryVirtualPath]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9079228
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +256
    
    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.237
    

    What does it mean ?

    Code as requested^^

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return Content("Hello world");
        }
    }
    

    thats the only code i added.

    application_start code

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
    
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
    

    RouteConfig

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
    

    FilterConfig

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }
    }
    

    BundleConfig

     public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-1.*"));
    
            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                        "~/Scripts/jquery-ui*"));
    
            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                        "~/Scripts/jquery.unobtrusive*",
                        "~/Scripts/jquery.validate*"));
    
            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                        "~/Scripts/modernizr-*"));
    
            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
    
            bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                        "~/Content/themes/base/jquery.ui.core.css",
                        "~/Content/themes/base/jquery.ui.resizable.css",
                        "~/Content/themes/base/jquery.ui.selectable.css",
                        "~/Content/themes/base/jquery.ui.accordion.css",
                        "~/Content/themes/base/jquery.ui.autocomplete.css",
                        "~/Content/themes/base/jquery.ui.button.css",
                        "~/Content/themes/base/jquery.ui.dialog.css",
                        "~/Content/themes/base/jquery.ui.slider.css",
                        "~/Content/themes/base/jquery.ui.tabs.css",
                        "~/Content/themes/base/jquery.ui.datepicker.css",
                        "~/Content/themes/base/jquery.ui.progressbar.css",
                        "~/Content/themes/base/jquery.ui.theme.css"));
        }
    }
    

    看起来这个错误来源于“应用程序目录中不包含所需的文件”,或者将代码上传到未配置为虚拟目录的目录中,或者甚至在不正确的目录中。


    This post is similar to Directory does not exist. Parameter name: directoryVirtualPath

    The answer helped me debug. Apparently, there are missing folders on the target server. My application worked fine locally, but when I published, several script sub-directories did not get published. When I manually FTP'd them up, the app worked fine!


    To expand on the information here.

    I often bundle all file in a folder like so: "~/Content/js/angular/modules/*.js", And this works great as long as the folder exists.

    The issue is, if that folder is empty when you publish it will not be published and will result in the above exception. So now i either put an empty.txt or something of the sort of add the folder manually if i want them to remain empty for now.

    链接地址: http://www.djcxy.com/p/71820.html

    上一篇: 未登录与未经RESTful API授权的独特HTTP状态

    下一篇: 参数名称:directoryVirtualPath