2013-02-07 25 views
0

如果项目插入成功,我试图在Web api post方法上设置位置标题,但问题是如果我尝试从mvc控制器调用该api操作,它会给我一个Url.Link上的异常,并说参数'请求'缺失。有没有一种方法可以在不需要请求的情况下生成url?Url.Link需要请求参数吗?

这里是Web API后置代号 -

public HttpResponseMessage Post (Product product) 
{ 
    ... 
    if (addedSuccessfully) 
    { 
     var response = new HttpResponseMessage {StatusCode = HttpStatusCode.Created}; 
     var uri = Url.Link("DefaultApi", new {id = product.ProductId}); 
     if (uri != null) 
      response.Headers.Location = new Uri(uri); 
     return response; 
    } 
    return new HttpResponseMessage {StatusCode = HttpStatusCode.Conflict}; 
} 

这是我如何我叫它

_productController.Post(product); 

回答

1

理想情况下,你不应该创建Web API控制器,并开始对他们调用操作,除非你是单元测试。当内部创建时,控制器的上下文会被Web API系统初始化。

如果你能解释你的情况,就像你在使用从web API返回的HttpResponseMessage所做的一样,也许我可以提出一个解决方案。

+0

我想写“发布”逻辑一次,并让它可以从javascript ajax调用和mvc端使用。我认为我应该做的是将少量额外的行添加到mvc控制器来调用数据访问层。代码/功能有点重复,但该怎么做 – camelCaseWarrior