2012-07-04 111 views
9

我正在使用Visual Studio Express 2012 RC。目录不存在 - 参数名称:目录虚拟路径

  • 如果创建一个空白的“Hello World MVC 4.5项目”
  • 我把它降级到4.0所以它与我的主机(Arvixe)
  • 兼容我将它发布到主机。

然后我得到这个错误信息,我可以在网上找到它的任何信息。

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 

这是什么意思?作为请求

代码^^

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

,这是我加入的唯一代码。

的Application_Start代码

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")); 
    } 
} 
+0

你可以发布您的代码 –

+0

当然会做,但这只是一个测试。 – BjarkeCK

+1

你可以发布application_start内的代码吗? –

回答

15

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

+0

我认为你是对的:)将测试它,并回到一分钟 – BjarkeCK

+0

好吧,让我知道你的结果。祝你好运。 –

+0

嗯,我认为解决了这个问题,但现在它是一个新的:http:** temp.iconbench.com/ – BjarkeCK

5

这篇文章是类似于Directory does not exist. Parameter name: directoryVirtualPath

答案帮我调试。显然,目标服务器上缺少文件夹。我的应用程序在本地运行良好,但是当我发布时,几个script子目录未发布。当我手动FTP'd他们,应用程序工作正常!

+0

这也是我的问题。 Visual Studio似乎没有默认发布空目录,即使应用程序使用它们并且它们包含在项目中。 –

3

欲了解更多信息,请点击此处。

我经常将所有文件都捆绑在一个文件夹中,如下所示:"~/Content/js/angular/modules/*.js", 只要文件夹存在,此功能就很有用。

问题是,如果该文件夹在发布时为空,它将不会被发布,并将导致上述异常。所以现在我要么把empty.txt或类似手动添加文件夹的东西,如果我想他们现在保持空。

+0

啊,这节省了我几个小时:)谢谢 – Yulian

-4

创建目录“/内容/主题/基地”

0

检查,如果你有在bin文件夹中的dll,也是DLL在GAC

删除DLL存在从GAC