c# - 难倒自托管 Web Api 服务

标签 c# asp.net .net asp.net-mvc-4 asp.net-web-api

请帮忙,我正在尝试自行托管网络 API。

当同一 Controller 托管在 Web 项目上并在开发上运行时,通过 F5,一切正常。

但是现在我正在尝试自行托管,我得到 411 和 404。411,当我使用 Fiddler 连接时,404 当我试图通过另一个库连接时。

这是应该托管服务的控制台应用程序:

class Program
{        
    static int portNumber;



    static void Main(string[] args)
    {
        portNumber = 8089;

        var config = new HttpSelfHostConfiguration(
            string.Format("http://localhost:{0}", portNumber));

        config.Routes.MapHttpRoute(
                "API Default", "api/{controller}/{id}",
                new { id = RouteParameter.Optional });

        using (var server = new HttpSelfHostServer(config))
        {

            var test = new RetrieveGuidService().Execute(Unit.Instance);

            server.OpenAsync().Wait();

            Console.ReadLine();
        }
    }
}

这就是我的 Controller 的样子,它什么都不做,它只是一个测试。

public class RetrieveGuidServiceController : ApiController
{
    public virtual Guid PostExecute(Unit request)
    {
        IQueryService<Unit,Guid> queryService = new RetrieveGuidService();
        return queryService.Execute(request);
    }
}

下面是我尝试通过 fiddler 访问它的方式:

My Fiddler Pic

当服务托管在网络项目上时,同样适用。我几乎完全按照本教程进行操作:asp.net WebApi self host tutorial其中包括运行 nugget 脚本、添加依赖项等。

我还缺少什么?

最佳答案

411 是因为您没有放置 Content-Length header 。即使您不发送内容,您也需要包含 Content-Length: 0。

关于将 Controller 置于正确的程序集中,我遇到了不一致的行为。在某些项目中,它似乎在其他项目中有效,但在其他项目中却无效。不确定我做错了什么。我有一个项目 here它使用不同程序集中的所有 Controller 同时执行 Web Host 和 Self-Host,并且工作正常。

关于c# - 难倒自托管 Web Api 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286167/

相关文章:

javascript - 选择列表框后更新模态中的文本框

带有 x509 安全证书的 ASP.NET Web API

c# - C++/CLI 中是否有等效于 C# "var"关键字的关键字?

c# - 如何将 C# 对象列表导出到 Excel 电子表格?

.net - 当属性 Visibility 更改时为 StackPanel 设置动画

c# - 以字节为单位计算 utf-8 字符串大小?

c# - 如何使用 C# 查找所有窗口?

c# - SemaphoreSlim 不会对并发请求进行排队,并且仍然允许双重预订

c# - NSubstitute - 伪造一个调用另一个虚拟方法的虚拟方法

c# - 如何从 url 字符串中删除端口号