【问题标题】:No controller is found by Web API although controller exists尽管存在控制器,但 Web API 未找到控制器
【发布时间】:2013-04-02 11:15:59
【问题描述】:

我创建了一个包含两个项目的解决方案:一个是带有 Self Host Web API 的类库(在 http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api 的帮助下创建),第二个是使用 TopShelf 创建的 Windows 服务。此解决方案的目的是使用 Web API 生成有关服务的状态报告。

一切正常,但是当我在目标解决方案中重新创建解决方案时,整个应用程序无法正常工作。 Windows 服务似乎正在工作,但是当我输入 localhost:8080/Test 时,它应该可以查看(并且在开头提到的单独测试解决方案中确实如此)它会引发错误(以 xml 格式查看):

Message: No HTTP resource was found that matches the request URI 'http://localhost:8080/Test'.
MessageDetail: No type was found that matches the controller named 'Report'.

在包含 SelfHost 的项目中有一个 ReportController(继承自 ApiController),但不知何故它是“可见的”。我猜测了一下(我相信这是一个愚蠢的猜测)并将其移至 Windows 服务项目,但它也无法正常工作。

谁能告诉我我面临的问题是什么?如果在一个简单的解决方案中它为什么看不到控制器?

编辑: 我的路由如下所示:

var config = new HttpSelfHostConfiguration(String.Format("http://localhost:{0}", port));
config.Routes.MapHttpRoute("API Default", "{action}", new { controller = defaultControllerName });

在哪里

defaultControllerName = "Report";

【问题讨论】:

  • 我可以看到路由/web-api 配置吗?
  • 是的,请发布路线。并检查您的服务以管理员身份运行。我不确定,但可能需要在本地系统上保留一个 url。

标签: c# routing controller asp.net-web-api self-hosting


【解决方案1】:

我很惭愧地承认这一点,但它不起作用的原因在于控制器类没有访问修饰符。将其公开修复了该错误。

【讨论】:

  • 请注意:方法也需要公开。
  • 干得好!这不是一个耻辱。我们都会犯错误,在某些情况下看到别人的错误真的很有帮助,可以节省很多时间。 (没有发生在我身上,但可以!)
  • 很遗憾错误消息不是描述性的
  • 很抱歉,当我还是 Stack 的新手时就写过 :-)
  • @MauriceKlimek 谢谢这节省了我的时间。
【解决方案2】:

类和方法必须是公开的

public class PrintController: ApiController
{
    //[HttpGet, Route("api/Print/Getp")]
    public string Get()
    {
 
        var ob = new List<string>();
        foreach (var item in File.ReadLines(@"c:\PrintService\pr.txt"))
        {
            string i = item;
            ob.Add(i);
        }
        var json1 = JsonConvert.SerializeObject(ob);


        return "ok";
    }
}

我的路线配置是这样的:

            _config.Routes.MapHttpRoute("DefaultHttpRoute", "api/{controller}");

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 2020-12-31
    • 2015-08-13
    • 1970-01-01
    • 2023-03-12
    • 2014-06-01
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多