C# 虽然控制器存在,但Web API未找到任何控制器
我用两个项目创建了一个解决方案:一个是带有自宿主Web API的类库(在的帮助下创建),第二个是使用TopShelf创建的windows服务。此解决方案的目的是使用Web API对服务进行状态报告 一切正常,但当我在目标解决方案中重新创建解决方案时,整个应用程序无法正常工作。Windows服务似乎正在工作,但当我键入localhost:8080/Test时,它会抛出一个错误(以xml的形式查看): 项目中有一个ReportController(继承自ApicController),它包含SelfHost,但不知何故它是“可见的”。我做了一个猜测(我相信这是一个愚蠢的猜测),并将其转移到windows服务项目中,但它也不起作用 有人能告诉我我面临的问题是什么吗?如果控制器在一个简单的解决方案中存在,为什么它看不到控制器 编辑: 我的路由如下所示:C# 虽然控制器存在,但Web API未找到任何控制器,c#,routing,controller,asp.net-web-api,self-hosting,C#,Routing,Controller,Asp.net Web Api,Self Hosting,我用两个项目创建了一个解决方案:一个是带有自宿主Web API的类库(在的帮助下创建),第二个是使用TopShelf创建的windows服务。此解决方案的目的是使用Web API对服务进行状态报告 一切正常,但当我在目标解决方案中重新创建解决方案时,整个应用程序无法正常工作。Windows服务似乎正在工作,但当我键入localhost:8080/Test时,它会抛出一个错误(以xml的形式查看): 项目中有一个ReportController(继承自ApicController),它包含Self
var config = new HttpSelfHostConfiguration(String.Format("http://localhost:{0}", port));
config.Routes.MapHttpRoute("API Default", "{action}", new { controller = defaultControllerName });
在哪里
承认这一点很遗憾,但它不起作用的原因在于控制器类没有访问修饰符。将其公开修复了错误。类和方法必须是公开的
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";
}
}
我可以查看路由/web api配置吗?可以,请发布路由。并检查您的服务是否以管理员身份运行。我不确定,但可能需要在本地系统上保留一个url。请注意:该方法也需要公开。干得好!这并不丢人。我们都会犯错误,在某些情况下,看到别人的错误真的会很有帮助,也会节省很多时间。(没有发生在我身上,但可能!!)很遗憾错误消息没有被描述。很抱歉,当我还是Stack的新手时,我写过:-)@MauriceKlimek谢谢这帮我节省了几个小时。
defaultControllerName = "Report";
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}");