HttpResponseMessage在VS 2012项目的App_Code文件夹中不可用

时间:2013-11-11 19:39:30

标签: c#-4.0 visual-studio-2012 asp.net-web-api system.net.httpwebrequest

我正在编写一个Web API项目(MVC架构)。我有一个实用程序类,其方法返回一个HttpResponseMessage。如果此类放在Utility文件夹中,一切正常。如果我尝试将该类放在App_Code文件夹中,则会收到消息“找不到类型或命名空间名称'HttpResponseMessage'。”

下面提供了发生这种情况的方法的示例。需要做什么才能在App_Code文件夹中将变量或方法声明为HttpResponseMessage?

    public HttpResponseMessage GetResponseMessage<T>(T item, MediaTypeFormatter mtFormatter)
    {
        HttpResponseMessage response = new HttpResponseMessage()
        {
            Content = new ObjectContent<T>(item, mtFormatter)
        };

        return response;
    }

1 个答案:

答案 0 :(得分:15)

当Visual Studio调用C#编译器并根据csproj文件中的引用传递适当的引用程序集(DLL)时,将编译App_Code以外的文件。

当运行时ASP.NET调用C#编译器并根据web.config文件中的引用传递适当的引用程序集(DLL)时,将编译App_Code内的文件。

要添加对System.Net.HttpHttpResponseMessage所在的程序集)的引用,请打开web.config文件并合并此设置:

<compilation debug="true" targetFramework="4.5">
    <assemblies>
        <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </assemblies>
</compilation>