“ /”应用程序中的服务器错误。 (没有找到您要查的资源。 )

时间:2019-09-12 03:48:36

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

我已经在Visual Studio 2017中创建了一个MVC项目,我为正常工作的网页添加了一些控制器,
现在,我想在同一项目中创建Web API,为此,我在 App_Start 文件夹中为 WEB API配置

添加了一个类。

这是代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Web;
using System.Web.Http;

namespace TestApp.App_Start
{
    public class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }     
    }
}

,并且在已经创建了网页控制器的controllers文件夹中
我添加了具有默认读写操作的Web Api控制器名称ValController

在这里

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

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

但是当我运行它时 我尝试在此url: localhost:44364/Val/Get
上访问此文件 localhost:44364/api/Val/Get

  

“ /”应用程序中的服务器错误。   找不到资源。

将提供任何帮助

3 个答案:

答案 0 :(得分:1)

我认为问题在于api控制器文件结构。 MVC基本上是通过“ Convention over configuration”工作的,MVC路由器可能无法识别App_Data中添加的api。您能否在App_Data外部创建名为“ Api”的新文件夹,作为项目的直接子文件夹,然后将api代码移动到该文件夹​​?

此外,根据给定的路由配置,您可以检查以下网址。

* localhost:<port>/api/Val
* localhost:<port>/api/Val/5

也正如@David所说,将{action}部分包含在路由网址中

routeTemplate: "api/{controller}/{action}/{id}"

答案 1 :(得分:1)

一切都好起来

只是一件事

检查是否已将其添加到function DogA(){ this.name = 'a' return { name: 'b', bark: () => { console.log(this.name) } } } const dogA = new DogA() dogA.bark() // a 文件中

Global.asax.cs

答案 2 :(得分:0)

您设置的路由是控制器/参数,您需要将其设置为控制器/ ACTION /参数。

 routeTemplate: "api/{controller}/{action}/{id}",