The only place that uses controller name to build link is at EntitySetControllerHelpers.cs(79).
public static HttpResponseMessage PostResponse<TEntity, TKey>(ApiController controller, TEntity createdEntity, TKey entityKey)
{
HttpResponseMessage response = null;
HttpRequestMessage request = controller.Request;
if (RequestPrefersReturnNoContent(request))
{
response = request.CreateResponse(HttpStatusCode.NoContent);
response.Headers.Add(PreferenceAppliedHeaderName, ReturnNoContentHeaderValue);
}
else
{
response = request.CreateResponse(HttpStatusCode.Created, createdEntity);
}
string controllerName = controller.ControllerContext.ControllerDescriptor.ControllerName;
response.Headers.Location = new Uri(controller.Url.ODataLink(
new EntitySetPathSegment(controllerName),
new KeyValuePathSegment(ODataUriUtils.ConvertToUriLiteral(entityKey, ODataVersion.V3))));
return response;
}
Instead, we should use entity set name.
public static HttpResponseMessage PostResponse<TEntity, TKey>(ApiController controller, TEntity createdEntity, TKey entityKey)
{
HttpResponseMessage response = null;
HttpRequestMessage request = controller.Request;
if (RequestPrefersReturnNoContent(request))
{
response = request.CreateResponse(HttpStatusCode.NoContent);
response.Headers.Add(PreferenceAppliedHeaderName, ReturnNoContentHeaderValue);
}
else
{
response = request.CreateResponse(HttpStatusCode.Created, createdEntity);
}
string controllerName = controller.ControllerContext.ControllerDescriptor.ControllerName;
response.Headers.Location = new Uri(controller.Url.ODataLink(
new EntitySetPathSegment(controllerName),
new KeyValuePathSegment(ODataUriUtils.ConvertToUriLiteral(entityKey, ODataVersion.V3))));
return response;
}
Instead, we should use entity set name.