Url.Link需要请求参数吗?

时间:2013-02-07 18:08:35

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

如果项目已成功插入,我正在尝试在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);

1 个答案:

答案 0 :(得分:1)

理想情况下,除非进行单元测试,否则不应创建Web API控制器并开始对它们执行操作。控制器具有在内部创建Web API系统时初始化的上下文。

如果您可以解释您的场景,就像您使用从Web API返回的HttpResponseMessage所做的那样,可能我可以提供一个替代方案来解决它。