我正在编写一个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;
}
答案 0 :(得分:15)
当Visual Studio调用C#编译器并根据csproj文件中的引用传递适当的引用程序集(DLL)时,将编译App_Code
以外的文件。
当运行时ASP.NET调用C#编译器并根据web.config文件中的引用传递适当的引用程序集(DLL)时,将编译App_Code
内的文件。
要添加对System.Net.Http
(HttpResponseMessage
所在的程序集)的引用,请打开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>