这是我的示例网络API动作返回当我没有传递任何国家/地区代码时,请求的资源不支持http方法' GET'。。
[HttpGet, Route("GetByID/{customerID}")]
public HttpResponseMessage GetCustomer(string customerID)
{
HttpResponseMessage retObject = null;
bool IsError = false;
Customer customer = null;
var message="";
if (string.IsNullOrEmpty(customerID))
{
message = string.Format("Customer ID is empty or null");
HttpError err = new HttpError(message);
retObject = Request.CreateErrorResponse(HttpStatusCode.NotFound, err);
retObject.ReasonPhrase = message;
IsError = true;
}
else
{
customer = repository.Get(customerID);
if (customer.CustomerID == null)
{
message = string.Format("Customer with id [{0}] not found", customerID);
HttpError err = new HttpError(message);
retObject = Request.CreateErrorResponse(HttpStatusCode.NotFound, err);
retObject.ReasonPhrase = message;
IsError = true;
}
}
if (IsError)
return retObject;
else
return Request.CreateResponse(HttpStatusCode.OK, customer);
}
当我在没有参数的情况下调用 GetByID 时,我没有收到我在代码中设置的错误消息。看到我的代码然后必须注意我在customerID为空或null时设置错误但是我得到了不同的错误。
当客户ID为空或为空时,我设置此错误。
if (string.IsNullOrEmpty(customerID))
{
message = string.Format("Customer ID is empty or null");
HttpError err = new HttpError(message);
retObject = Request.CreateErrorResponse(HttpStatusCode.NotFound, err);
retObject.ReasonPhrase = message;
IsError = true;
}
所以请指导我如何在没有提供客户ID的情况下返回我的错误,当任何方式存在调用........时。指导我在我的代码中更改的位置,因此当客户ID为null或为空时,我的错误消息应该返回到客户端。感谢
这种问题已被排序。
[HttpGet, Route("GetByID/{customerID?}")]
public HttpResponseMessage GetCustomer(string customerID = null)
{
}
答案 0 :(得分:1)
您将参数customerID
定义为路由中的必需参数,因此如果未提供参数,则找不到操作。尝试使用?
将参数标记为可选参数:
[HttpGet, Route("GetByID/{customerID?}")]
这样您就可以处理动作中的空参数或空参数。