c# - 找不到方法:发送请求时 web api 控制器
问题描述
当我尝试调用 api 方法时,我遇到了异常
找不到方法:'无效 System.Web.Http.Filters.HttpActionExecutedContext.set_Response(System.Net.Http.HttpResponseMessage)'。
ApiController:-
[System.Web.Http.HttpGet]
public HttpResponseMessage CheckUserAuthentication(string UserName, string Password)
{
DomUserAuthentication objauthentication = new DomUserAuthentication();
var res = Request.CreateResponse(HttpStatusCode.OK);
/////Code here
res.Content = new StringContent(json, Encoding.UTF8, "application/json");
return res;
}
这是我的 Webapi.config:-
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{Action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
错误详情:-
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Method not found: 'Void System.Web.Http.Filters.HttpActionExecutedContext.set_Response(System.Net.Http.HttpResponseMessage)'.
</ExceptionMessage>
<ExceptionType>System.MissingMethodException</ExceptionType>
<StackTrace>
at SalesRevUp.CrossCutting.DataAPIErrors.OnException(HttpActionExecutedContext context) at System.Web.Http.Filters.ExceptionFilterAttribute.System.Web.Http.Filters.IExceptionFilter.ExecuteExceptionFilterAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken) at System.Web.Http.ApiController.<>c__DisplayClass8.<>c__DisplayClassa.<InvokeActionWithExceptionFilters>b__6(IExceptionFilter filter) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Threading.Tasks.TaskHelpers.IterateImpl(IEnumerator`1 enumerator, CancellationToken cancellationToken)
</StackTrace>
</Error>
解决方案
As an alternative solution, You can make use of attribute routing https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing
[Route("IntermediaryData/CheckUserAuthentication")]
[System.Web.Http.HttpGet]
public HttpResponseMessage CheckUserAuthentication(string UserName, string Password)
{
DomUserAuthentication objauthentication = new DomUserAuthentication();
var res = Request.CreateResponse(HttpStatusCode.OK);
/////Code here
res.Content = new StringContent(json, Encoding.UTF8, "application/json");
return res;
}
推荐阅读
- gradle - 多模块项目中的gradle继承
- android - 打开预先存在的 github 库时,Android 上的 CMAKE 和 NDK 出错。(使用 Windows 10)
- javascript - 从连续数字生成数字序列
- javascript - 在 React 中切换组件
- perl - Perl:将(Log4perl-)对象传递给模块
- go - 检查结构字段是否为空
- python - 如何从文本文件中随机删除 100 个块
- c - PRQA:如何忽略某些特定文件?
- python - 如何使用zeep在python中发出SOAP请求
- laravel-4 - 将mysql查询转换为laravel builder 4.2