【问题标题】:Web API controller not working after several hitsWeb API 控制器在多次点击后无法正常工作
【发布时间】:2018-04-12 07:18:30
【问题描述】:

多次点击后,Web API 控制器停止加载,但当我从 IIS 重新启动它时它开始工作。

我正在浏览器中测试 API。

这是我的控制器,带有 2 个凭据查询字符串:

  [System.Web.Mvc.OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
    public class TestController1 : ApiController
    {
        [HttpGet]
        public HttpResponseMessage TestController1(string Username, string Password)
        {
            bool isvalid;
            string id = string.Empty;


            isvalid = //cheking credentials;

            if (isvalid)
            {
                var obj = //getting data from DB;
                if (obj.Count == 0)
                {
                    HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.NotFound)
                    {
                        Content = new StringContent(string.Format("Data not found", id)),
                        ReasonPhrase = "Localized message Data not found!"
                    };
                    return msg;
                }
                else
                {
                    return Request.CreateResponse(HttpStatusCode.OK, obj);
                }
            }
            else
            {
                HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.Unauthorized)
                {
                    Content = new StringContent(string.Format("UserName or Password is Invalid")),
                    ReasonPhrase = "Identity not found!"
                };
                return msg;
            }
        }

    }

【问题讨论】:

  • 检查您的浏览器调试的网络部分,并在此处发布请求和响应,以便我们能够帮助您先生

标签: c# .net asp.net-mvc asp.net-web-api


【解决方案1】:

尝试从TestController1 中删除所有功能,然后简单地返回 Ok。如果仍然失败,请尝试捕获/查找任何异常 - 可能在 IIS 日志中。

如果它在没有您的功能的情况下也能正常工作,请分步重新启用它。一次启用//cheking credentials;//getting data from DB。也许你有内存消耗问题?

【讨论】:

  • 是的,当我获取 OK 时它工作正常。它也发生在我的本地主机上。我认为它发生在 90 到 100 次点击之间。
  • 所以当你简单地返回 ok(状态 200)时,它也会发生(在 90-100 次点击之后)?
  • 不,这不会发生。
  • IIS 有限制吗?
  • 不——我不知道。我很确定您的问题出在两个电话之一; //cheking credentials//getting data from DB。您是否可以一次只启用其中一个,然后再次测试?
猜你喜欢
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-13
  • 1970-01-01
相关资源
最近更新 更多