我正在尝试在web api控制器中返回未针对GET方法修改的304的状态代码.
我成功的唯一方法是这样的:
public class TryController : ApiController
{
public User GetUser(int userId, DateTime lastModifiedAtClient)
{
var user = new DataEntities().Users.First(p => p.Id == userId);
if (user.LastModified <= lastModifiedAtClient)
{
throw new HttpResponseException(HttpStatusCode.NotModified);
}
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是它不是一个例外,它只是没有修改,所以客户端缓存是好的.我还希望返回类型是User(因为所有web api示例都显示为GET)不返回HttpResponseMessage或类似的东西.
我似乎已经找到了问题,但不知道如何修复它,或者我是否可以.
当我创建一个新C# WebAPI项目,并为System.Net.Http我可以访问
添加导入Request.CreateResponse<T>.
当我创建一个新VB.Net WebAPI项目,并为System.Net.Http我所拥有的所有内容添加导入时Request.createODataErrorResponse.
然而,CreateResponse无论如何我都可以忽略智能感知和访问.似乎VB只是没有正确解释各种扩展.
我想修复intellisense,但实际上并不需要它.
谢谢!
史蒂夫
更新 我发现这个论坛帖子在2012年8月回复,解释它已被复制,但似乎尚未修复.
我是新来的,应该关闭吗?
虽然听起来很简单,但我没有找到任何关于此的文档,也许我写错了所以如果是这样的话,一些关于此的好文档将不胜感激.我只想返回一个字符串或类型字符串的模型.
return "string here";
Run Code Online (Sandbox Code Playgroud)
我每次都会收到此错误:
Severity Code Description Project File Line
Error CS0029 Cannot implicitly convert type 'string' to 'System.Web.Http.IHttpActionResult' TaskManagement C:\dev\TaskManagement\TaskManagement\Controllers\JobsController.cs 157
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用CAST - 同样的错误.
return (IHttpActionResult)"string"
Run Code Online (Sandbox Code Playgroud) 我的应用程序是ASP.NET Core 1.0 Web API。
如果我的控制器返回一个小的JSON,则一切正常。但是,如果JSON变大,则会出现此错误
Visual Studio给我这个错误
这是创建数据的控制器和方法(简称)
[HttpGet]
public async Task<IActionResult> GetUserData()
{
return this.Ok(GetSomeData());
}
private List<MyUser> GetSomeData()
{
var userList = new List<MyUser>();
for (int i = 0; i < 2500; i++)
{
userList.Add(new MyUser{
Name = "Data",
Age = i,
Phone = "000",
});
}
return userList;
}
Run Code Online (Sandbox Code Playgroud)
如果循环变大,则Iam会收到上面列出的错误。
请记住,代码是极其简化的。但是一切正常,直到返回大量数据。
我曾试图改变maxJsonLength的web.config,因为它是描述在这里。