如果项目已成功插入,我正在尝试在web api post方法上设置位置标题,但问题是如果我尝试从mvc控制器调用该api操作,它会在Url.Link上给我一个例外说法缺少参数'request'。有没有办法生成网址而不需要请求?
这是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);
答案 0 :(得分:1)
理想情况下,除非进行单元测试,否则不应创建Web API控制器并开始对它们执行操作。控制器具有在内部创建Web API系统时初始化的上下文。
如果您可以解释您的场景,就像您使用从Web API返回的HttpResponseMessage所做的那样,可能我可以提供一个替代方案来解决它。