我想增加一个ASP。NET Web API到ASP。NET MVC 4 Web应用程序项目,在Visual Studio 2012开发。我必须执行哪些步骤才能将功能正常的Web API添加到项目中?我知道我需要一个从ApiController派生的控制器,但这就是我所知道的全部。

如果我需要提供更多细节,请告诉我。

我一直在摆弄ASP。NET MVC 4 beta和我现在看到两种类型的控制器:ApiController和Controller。

我有点困惑在什么情况下我可以选择一个特定的控制器。

例如:如果我想返回一个视图,那么我必须使用ApiController或普通控制器?我知道WCF Web API现在已经与MVC集成了。

既然现在我们可以使用两个控制器有人能指出对应的控制器的情况吗。

我试图从Web API使用HttpClient POST一个JsonObject。我不太确定如何做到这一点,也找不到很多样例代码。

以下是我目前所了解到的:

var myObject = (dynamic)new JsonObject();
myObject.Data = "some data";
myObject.Data2 = "some more data";

HttpClient httpClient = new HttpClient("myurl");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = httpClient.Post("", ???);

我认为我需要将我的JsonObject转换为StreamContent,但我在这一步上被挂断了。

我想用ASP构建一个基于rest的web服务。. NET Web API,第三方开发人员将使用它来访问我的应用程序的数据。

我读了很多关于OAuth的文章,它似乎是标准的,但是找到一个好的示例文档来解释它是如何工作的(这实际上是可以工作的!)似乎是非常困难的(特别是对于一个OAuth新手)。

是否有一个实际构建和工作的示例,并显示如何实现它?

我下载了大量的样本:

DotNetOAuth——从新手的角度来看,文档是没有希望的 Thinktecture -不能让它建立

我也看过一些博客,他们提出了一个简单的基于令牌的方案(就像这样)——这看起来像是在重新发明轮子,但它的优点是在概念上相当简单。

似乎在SO上有很多这样的问题,但没有好的答案。

大家都在这里做什么?

我对我们向客户返回错误的方式有顾虑。

当我们得到一个错误时,我们是否通过抛出HttpResponseException立即返回错误:

public void Post(Customer customer)
{
    if (string.IsNullOrEmpty(customer.Name))
    {
        throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest) 
    }
    if (customer.Accounts.Count == 0)
    {
         throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest) 
    }
}

或者我们把所有错误都加起来,然后发送回客户端:

public void Post(Customer customer)
{
    List<string> errors = new List<string>();
    if (string.IsNullOrEmpty(customer.Name))
    {
        errors.Add("Customer Name cannot be empty"); 
    }
    if (customer.Accounts.Count == 0)
    {
         errors.Add("Customer does not have any account"); 
    }
    var responseMessage = new HttpResponseMessage<List<string>>(errors, HttpStatusCode.BadRequest);
    throw new HttpResponseException(responseMessage);
}

这只是一个示例代码,无论是验证错误还是服务器错误都不重要,我只是想知道最佳实践,每种方法的优点和缺点。

我读到,当你不能访问web服务器的头文件时,你可以使用以下方法关闭缓存:

<meta http-equiv="Cache-Control" content="no-store" />

但我也读到,这在某些版本的IE中不起作用。是否有一组<meta>标签将在所有浏览器中关闭缓存?

我花了几个月的时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序。

为了理解配置文件中的所有设置,我花了不少功夫。 我不相信环境,但似乎你可以用它做惊人的事情。

前几天我发现微软推出了一个叫ASP的新东西。NET Web API。

据我所知,这是一个RESTful框架,非常容易使用和实现。

现在,我试图弄清楚这两个框架之间的主要区别是什么,如果我应该尝试用新的API转换我的旧WCF服务应用程序。

有人能帮我了解一下这两种语言的区别和用法吗?

我有一个ASP。NET Web API(版本4)REST服务,我需要传递一个整数数组。

下面是我的动作方法:

public IEnumerable<Category> GetCategories(int[] categoryIds){
// code to retrieve categories from database
}

这是我试过的网址:

/Categories?categoryids=1,2,3,4

当你有服务器端代码(即一些ApiController),你的函数是异步的-所以他们返回Task<SomeObject> -它被认为是最佳实践,任何时候你等待函数,你调用ConfigureAwait(false)?

我曾经读到过,它的性能更高,因为它不需要将线程上下文切换回原始线程上下文。然而,使用ASP。NET Web Api,如果你的请求来自一个线程,你在等待某个函数并调用ConfigureAwait(false),当你返回ApiController函数的最终结果时,这可能会让你在另一个线程上。

我在下面打了一个例子:

public class CustomerController : ApiController
{
    public async Task<Customer> Get(int id)
    {
        // you are on a particular thread here
        var customer = await GetCustomerAsync(id).ConfigureAwait(false);
        
        // now you are on a different thread!  will that cause problems?
        return customer;
    }
}

我最近发现了一个从IMDB数据库获取数据的电影管理应用程序。

IMDB是否为此提供API,或任何可用的第三方API ?