【问题标题】:HttpGet Attribute not usable when including the System.Web.Mvc libraries包含 System.Web.Mvc 库时,HttpGet 属性不可用
【发布时间】:2013-02-01 11:01:49
【问题描述】:

我正在编写一个区分 HttpGetHttpPost 请求类型的 Web API。我刚刚将System.Web.MvcSystem.Web.Mvc.Ajax 命名空间添加到项目中,我定义HttpGetHttpPost 的能力消失了。它再也找不到属性了。

发生了什么事?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    您是否在同一个文件中同时包含 System.Web.Http 和 System.Web.Mvc 命名空间?

    我想不出很多你想要这样做的充分理由,但如果你愿意,那么你需要添加完整的命名空间。请参阅下面的示例。由于 Mvc 和 Http 命名空间都有 HttpGet 和 HttpPost,因此您需要指定使用哪一个。

    【讨论】:

    • 虽然我无法测试它,因为它正在工作而我没有,但我怀疑这就是我正在寻找的答案。至于为什么我把两者都包括在内?好吧,System.Web.Http 默认包含在一个新的 Web API 文件中——所以我把它留在了。不过,我想要 JsonResult 类型,它存在于System.Web.Mvc 中——因此包含了它。随意在这里提供一些指示,听起来我做错了什么:)
    • 我想我已经解决了自己的问题。我没有意识到它会自然地以 JSON 响应。当我从 chrome 请求特定 url 时,我看到了 XML,但看起来如果我在没有浏览器包含的标头(例如使用 javascript)的情况下调用它,我会得到 JSON。猜猜System.Web.Mvc 不是我想要的。
    • 我认为这篇文章 (asp.net/web-api/overview/formats-and-model-binding/…) 就是您要找的。如果你想指定你想要 xml 或 json,那么你需要在你的 header 中添加一个 content-type。我会推荐 fiddler (fiddler2.com/fiddler2) 进行测试,因为它允许您相当轻松地发出请求和更改标头。
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2013-08-10
    • 2015-03-07
    相关资源
    最近更新 更多