WebApi MessageHandler参数类型问题

时间:2016-10-10 14:07:49

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

我正在尝试使用Messagehandler解密http url中可用的ID。即使我在解密后获得了正确的URL。

解密前的网址http://localhost:ip/v1/controller/abcd

解密后的网址http://localhost:ip/v1/controller/1

以下是我的MessageHandler的逻辑。

UriBuilder builder = new UriBuilder(); 
string replacedParam = querySegment.Replace("/", ""); 
builder.Path = builder.Path.Replace(replacedParam, Cryptor.DecryptString(replacedParam));
request.RequestUri  = builder.uri;

HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

在Controller端,路由期望整数类型的id参数。即使MessageHandler将加密密钥更改为整数值,但仍未调用端点。

[Route("{id}")]
[HttpGet]
ResponseType(typeof(ChannelViewModel))]
public async Task<IHttpActionResult> GetByIdAsync([FromUri]int id)

错误: “参数字典包含方法'System'的非可空类型'System.Int32'的参数'id'的空条目。

如果我用整数参数调用路由它可以正常工作。但是如果我用加密密钥调用路由并且MessageHandler将密钥更改为整数值,则路由仍将其视为字符串,而处理程序将其发送为整数值。相同的MessageHandler与我的其他两个项目一起工作正常。但是在这个问题上找不到问题。

0 个答案:

没有答案