5

私は 2 つのプロジェクトで 1 つのソリューションを作成しました。 -host-a-web-api )、2 つ目は TopShelf で作成された Windows サービスです。このソリューションの目的は、Web API を使用してサービスのステータス レポートを作成することです。

すべて正常に動作しますが、ターゲット ソリューション内でソリューションを再作成すると、アプリケーション全体が正しく動作しません。Windows サービスは動作しているようですが、 localhost:8080/Test と入力すると、OK を表示すると想定されます (最初に説明した別のテスト ソリューションで表示されます)。エラーがスローされます (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";
4

2 に答える 2

1

クラスとメソッドはパブリックでなければなりません

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}");
于 2021-02-26T20:17:51.843 に答える