加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET Web API错误:未找到与请求URI匹配的HTT

发布时间:2020-12-16 06:23:25 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试将Web API添加到现有的ASP.NET MVC项目中.这最初是一个ASP.NET MVC 2网站,后来升级到MVC 3,然后使用以下过程再次升级到MVC 4: Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3 Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4 我的Ap
我正在尝试将Web API添加到现有的ASP.NET MVC项目中.这最初是一个ASP.NET MVC 2网站,后来升级到MVC 3,然后使用以下过程再次升级到MVC 4:

Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3

Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4

我的Api控制器非常简单.实际上,它是默认模板:

public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1","value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }
}

我添加了一个类来注册de API路由.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional }
        );
    }
}

这是从Application_Start调用的

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

但是,当我尝试访问’localhost:50315 / api / values’时,我收到以下错误:

<Error>
<Message>
    No HTTP resource was found that matches the request URI    'http://localhost:50315/api/values'.
</Message>
<MessageDetail>
    No type was found that matches the controller named 'values'.
</MessageDetail>
</Error>

根据路由调试器,路由似乎正常工作,web api路由是“匹配当前请求”的第一个条目.

解决方法

请看下面的步骤 – 它可能没有给你一个正确的答案,但它会给你一个调试问题的方向.您可以逐个执行这些操作.

>确保您已执行以下操作:

Install-Package Microsoft.AspNet.WebApi

这只是为了确保您拥有正确的DLLS.

>您可以尝试的另一件事是在get的顶部添加一条路线.

class ValuesController : ApiController
{ 
    [System.Web.Http.Route("api/values")]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1","value2" };
    }

    public string Get(int id)
    {
        return "value";
    }
}

>禁用MvC路由进行调试.即

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
}

>启用GET动词.

我在我的项目下面给你作为参考.

<httpProtocol>
      <customHeaders>

        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Allow-Methods" value="*" />
      </customHeaders>
    </httpProtocol>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="WebDAV" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" preCondition="classicMode,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读