问题标签 [self-host-webapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1140 浏览

c# - 将库中的 WebApi 控制器托管到 IIS 中

我在类库中有一些 WebApi 控制器,我想在 IIS 中托管它们。我知道控制台应用程序或 Windows 服务中的自托管解决方案,但这仅适用于本地使用。如何解决实际上非常适合在 IIS 中托管的 Asp.Net Web/WebApi 应用程序中的控制器程序集?

我正在寻找类似这种方法的东西,只有不同的托管场景: http: //www.strathweb.com/2012/06/using-controllers-from-an-external-assembly-in-asp-net-web-api

0 投票
2 回答
1927 浏览

c# - Owin selfhost asp.net Web api在作为服务启动时拒绝连接

我有一个可用的 Web api 服务,我从一个控制台项目开始。现在我想让它作为服务运行。

我使用带有此代码的 installutil.exe 将其安装为服务:

这是我用来启动服务的:

当我启动服务时,我的记录器显示它一直通过 StartService() 运行。我可以看到我已经添加了我在客户端中调用的 ip。该服务在我启动后并没有停止。

但是,当我连接时,我收到此消息:“无法建立连接,因为目标机器主动拒绝了它”

由于帐户类型是 ServiceAccount.LocalSystem 并且它确实启动(并且不会引发异常),因此权限应该没问题。我已经为我使用的端口添加了一个例外到我的本地防火墙。

还有什么可能是错的?

编辑:在命令窗口中运行 netstat -ano,Web 服务作为控制台和服务运行,当它作为服务运行时,它不会显示在列表中,而作为控制台应用程序运行时它会显示。防火墙配置问题?

0 投票
1 回答
583 浏览

asp.net-web-api - 是否可以将 favicon 添加到 sefl 托管的 Web api 服务?

我有许多服务要从普通的 Web API 转移到 Owin/Katana 作为自托管的 Web api 服务。因为我们以某种方式使用微服务,所以我们有许多可以运行的小服务,并且所有这些服务都有相同的 favicon.ico,它向开发人员展示了我们在服务中的品牌。是否可以将 favicon 添加到自托管 Web api?如何?

0 投票
0 回答
221 浏览

c# - 在控制器外部的自托管 Web API 中访问 IOwinRequest

我有一个自托管的网络 API。我有一个日志生成器助手,它使用来自 IOwinRequest 对象的大量详细信息(即请求的 url、ip 地址、http 方法等)填充 LogMessage 对象。每当代码记录一条消息时,我都会使用此日志助手来填充所有这些详细信息。

例如,在一个服务中,我有这样的代码:

如何从 LogMessageCreator 对象中访问 IOwinRequest 对象?

这发生在控制器之外。

0 投票
1 回答
154 浏览

asp.net-web-api - 使用 WebApi 自托管的团队城市 - WebException 发送时发生意外错误

我有 WebApi 和 ac# 客户端应用程序。为了运行集成测试,我在这样的基类中使用 owin self host:

所有测试都在我的计算机上本地通过,就像其他计算机从 TFS 服务器获取代码一样,但是当我在团队城市运行测试时,它失败并显示此异常:---> System.Net.Http.HttpRequestExeption:An发送请求时发生错误。

---> 系统。Net.WebExeption:底层连接已关闭:发送时发生意外错误。

系统。IO.IOExepyion:无法从传输连接读取数据:远程主机强制关闭现有连接。---> 系统。Net.Socket.SocketExeption : 一个令人兴奋的连接被远程主机强行关闭。

0 投票
1 回答
1523 浏览

networking - 如何通过 Internet 公开 .NET 自托管 Web API

我有一个 WPF 应用程序在笔记本电脑上运行,该应用程序在端口 9001 上为该笔记本电脑的网络 IP 地址自托管 Web API。我能够从本地家庭网络上的不同机器成功地将 Http 流量发送到该端口。

我需要通过 Internet 从远程位置对同一台笔记本电脑运行测试。我做了以下事情:

  • 为我的笔记本电脑创建了一个静态 IP 地址
  • 在防火墙中添加了入站规则,以允许任何传入域或 IP 的端口 9001 的 TCP
  • 在我的 Verizon 路由器中为该笔记本电脑的 IP 地址添加了端口 9001 的 TCP 端口转发
  • 前往 CanYouSeeMe.org 并确认我的 ISP 没有阻止我面向 Internet 的外部 IP 地址上的该端口
  • 为了从我的本地网络进行测试,我通过 Fiddler 向我的外部 IP 地址发送了一个 Http 请求,并且该端口和 API 成功执行
  • 我还可以使用外部 IP 和端口从网络上的任何计算机成功访问该 API。

但是,如果我尝试从不在我的网络上的计算机访问相同的外部地址和端口,它会返回连接失败的 http 502 状态。有什么想法我应该在哪里寻找吗?

谢谢,吉姆

0 投票
0 回答
222 浏览

asp.net-web-api - 服务器中的 WEB API 自托管

我已经创建了 ASP.net WEB API 并使用 OWIN 和 windows 服务托管,我已经使用 INSTALLUTILL 在 windows Server 2014 r2 中托管了该服务,该服务运行正常。

我的问题是,当我使用 localhost(localhost:51495/api/User/GetAllUsers) 浏览 API 时,我能够看到数据。但是当我使用主机名(主机名:51495/api/User/GetAllUsers)时,我收到错误消息。糟糕的主机,有时服务不可用。

我知道我缺少将主机名与本地主机映射的东西,但不知道该怎么做。请帮我解决一下这个。

0 投票
1 回答
1483 浏览

rest - 如何在自托管 owin 服务器中动态创建 Web API(REST api)?

我正在寻找一种动态生成 W​​eb api 并在运行时添加它们的方法(在初始化自托管服务器之后)。

基本上这个想法是: 1. 创建一个 selfhost owin 服务器,服务于静态/已经定义的控制器(web apis)-> 这部分没问题

  1. 稍后,我想动态生成一个新控制器并以某种方式将其添加到服务器,以便客户端可以向它发送请求。-> 有没有办法做到这一点?我知道我可以动态构建一个控制器并将其添加到服务器之前,它被初始化为服务现有的 Web api(使用 CustomAssemblyResolver)。

  2. 现在可能需要更新现有的控制器。我想重新生成一个现有控制器并更新服务器以使用新定义(可能是参数更改、api 名称更改等)有什么办法吗?我们可以在不停止所有控制器的情况下回收控制器吗?如果以某种方式可以支持此功能,是否意味着该服务将在一段时间内不可用(直到更新完成)。

  3. 理想情况下,它会像 IIS 中托管的 Web 服务一样工作。如果 Web 服务定义在 2 个请求之间发生变化。第一个请求转到旧定义,第二个请求透明地指向新定义。服务没有中断。

有任何想法吗?

提前致谢

0 投票
1 回答
1249 浏览

c# - OWIN Self-Host + Web Api 连接无法通过 Postman 发出请求

我正在尝试自托管 Web API。当我通过我的程序调用请求时它工作正常,API 控制器在哪里。但我无法通过 Postman Client 提出请求。可能是什么问题呢?

API 控制器

启动.cs

程序.cs

0 投票
1 回答
1484 浏览

c# - IHttpActionResult.ExecuteAsync() 重载返回的任务未运行

我正在尝试创建一个自托管的 Web 服务,该服务启动它的服务器Microsoft.Owin.Hosting.WebApp.Start<NotifyStartup>("http://localhost:9000/")并包含一个从System.Net.Http.ApiController. NotifyStartup看起来像这样:

控制器有这个 URI 处理程序:

这是HttpAction:

(在某些时候HttpAction会注意Notify()'sbody参数,并 rspContent会分配一些需要一些数据库查找的东西,这就是为什么我试图使这项工作异步进行。)

当我运行程序并 POST 到http://localhost:9000/notify/时,会调用 URI 处理程序,它会创建一个HttpAction实例并ExecuteAsync()调用该实例的方法。但是,它返回的任务永远不会运行,客户端挂起等待响应。如果我更改ExecuteAsync()以便同步完成工作并在包装器任务中返回响应:

该包装器任务运行并且客户端收到它的响应。

据我所知,由调用者创建的任务看起来应该new Task<>...Task.FromResult()调用者相同。为什么它await(或它实际为获得结果所做的任何事情)是一个而不是另一个?我究竟做错了什么?有可能完成这项工作吗?