如何在MVC dnx45 11.0.0-beta4控制器中读取文件

时间:2015-05-26 22:45:50

标签: dnx

我正在尝试编写一些非常基本的MVC Controller代码来读取位于wwwroot子文件夹中的目录中的文件。

当我将此代码添加到我的控制器时:

String path = HttpContext.Current.Server.MapPath("~/Data/data.html");

VS告诉我HttpContext在“Microsoft.AspNet.Http.Abstractions”:“1.0.0-beta5-11495”中可用,因此使用Visual Studio的快速帮助程序我选择将其添加到project.json文件中。它还将此using语句添加到我的控制器类中。

using Microsoft.AspNet.Http;

然后所有的一切都会爆发,因为当HttpContext解析时,'Current'属性不会。此外,添加该包会破坏Startup.cs代码,因为无法解析Configure方法中的IApplicationBuild参数,因为VS说:

The type 'IApplicationBuilder' exists in both 
'Microsoft.AspNet.Http.Abstractions, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null' and 
'Microsoft.AspNet.Http, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null'   
VS_MVCWebApp.DNX 4.5.1

也许我根本没有使用新的dnx框架这样做,如果是这样的话,那么正确的方法是什么?

在一天结束时,我想使用他dnx451框架的1.0.0-beta4读取我的控制器中的文件。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

检查您的包版本。我只是通过将所有我的.NET nuget包更改为“1.0.0- *”来设法修复此错误。如果你有一些项目,请确保对类库项目执行相同的操作。

例如在我的情况下,我有一个'business'类库,它使用的是Microsoft.AspNet.Http和我的Test类库,它们使用相同的,所以只需要确保它们都有版本“1.0.0 - *”

更新: 请忽略之前的评论,因为这只会引用最新的可用软件包,这显然会产生很多问题!

我设法通过在我的解决方案中的所有项目中引用相同的包来解决这个问题。还要确保在MVC项目中引用项目并且该项目使用Microsoft.AspNet.Http(例如它包含中间件)时,请确保此项目引用Microsoft.AspNet.MVC而不是Microsoft.ASPNET。 HTTP。

这对我运行我的xunit测试也造成了问题。请查看此问题以获取更多信息xUnit.net v2 not discovering .NET Core Tests in Visual Studio 2015