ASP.NET 5 Beta7在Azure网站

时间:2015-09-16 20:37:13

标签: azure-web-sites asp.net-core asp.net-core-mvc

我有一个ASP.NET 5(vNext)应用程序,只是从beta5迁移到beta7,从dnx451迁移到dnx46,我无法正常工作。 我的另一个应用程序,在迁移后运行良好,我没有看到任何差异,但我发布它后会一直跟踪错误:

DirectoryNotFoundException: Could not find a part of the path 'D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\Facades\System.Collections.Concurrent.dll'.

System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)


System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)


System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)


Microsoft.AspNet.Mvc.Razor.Compilation.RoslynCompilationService.<>c__DisplayClass15_0.<CreateMetadataFileReference>b__0(String _)


System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)


Microsoft.AspNet.Mvc.Razor.Compilation.RoslynCompilationService.CreateMetadataFileReference(String path)

我尝试了几种发布方式,我创建了一个全新的WebSite,仍然是相同的 - 只有这样才能让它工作就是在Startup.cs中注释掉以下内容:

        app.UseMvc(routes =>
        {
            //default
            routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}"
                    );
            routes.MapRoute(
                      name: "overrideRoute",
                      template: "{*url}",
                      defaults: new { action = "Index", controller = "Home" }
                      );
            //web api
            routes.MapRoute(
                  name: "apiRoute",
                  template: "api/{controller}/{action}/{bizObject}/{id?}"
                  );
        });

如果没有上述,我可以写

            app.Run(async context =>
            {
                context.Response.ContentType = "text/plain";
                await context.Response.WriteAsync("test");
            });

并且它可以工作,但显然我需要MVC,而我的其他类似应用程序也可以正常工作。

任何提示?

1 个答案:

答案 0 :(得分:2)

这是一个已知问题。您可以按照https://github.com/projectkudu/kudu/issues/1675

中的错误进行操作

基本上@Dijkgraaf是正确的。缺少整个外观文件夹(.NETFramework\v4.6\Facades\),你无法做任何事情来解决这个问题。 Azure必须为目标4.6的构建添加该文件夹才能工作。如果可以,您可以尝试降级到dnx451,看看它是否现在适用于您,直到上面的错误得到解决。如果你对dnx46有很强的依赖性,那么不幸的是你只需要等待。