问题标签 [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 回答
1278 浏览

asp.net - 针对 Self Host Web API Windows 服务对 HTTP .NET 客户端进行身份验证

我找到了关于通过Self Host Web API http://www.asp.net/web-api/overview/older-versions/self-host-a-web-api实现客户端/服务器的精彩文章

我想知道这个模型的正确身份验证方法(Self Host Web API)。

我是否使用了不记名令牌身份验证?还有其他方法吗?

或者例如http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

我有以下工作要求:

  1. C# http 客户端必须连接到 Self Host Web API Windows 服务并发送文件。

  2. 连接必须 100% 安全。

那么如何保护WebAPI,有什么线索吗?

0 投票
0 回答
201 浏览

c# - 使用自定义 IHttpControllerSelector 时出现 KeyNotFoundException

我正在尝试为我的 Web API 2.2 项目使用自定义控制器选择器,该项目使用命名空间选择进行版本控制。该项目是自托管的。

网上有很多关于这方面的文章,但大多数都只涉及一个用例(即仅常规路由,或仅属性路由但没有路由前缀等)。

就我而言,我想使用所有的 cookie。换句话说,我的选择器必须支持这些:

任何选择器的主要部分是从请求中提取控制器名称。在大多数文章中,这是通过具有特定键(“控制器”)的字典来完成的。但这仅适用于传统的模板路由。

在处理属性路由时,建议使用路由约束并保留默认的控制器选择器。对我不起作用。

目前我像这样提取控制器名称:

对我来说似乎有点 hacky,但它可以工作并且不使用任何魔法常量(比如使用“actions”作为字典中的键进行搜索时)。

反正。在构建控制器列表(通过解析器),从请求中提取控制器名称并根据版本找到正确的 HttpControllerDescriptor 之后,我需要从 SelectController() 方法返回它。

这就是我得到 KeyNotFoundException 异常的地方。搜索后,我发现只有一次提到这一点(HttpControllerDispatcher 中的异常

解决方案是在传入请求中填写正确的子路由数据。现在我还没有在互联网上找到关于这个或任何其他的官方提及。只有这个帖子。

我想出的是另一段骇人听闻的代码:

在我的情况下,最初一条路由有 4 个子路由(每个版本的控制器有 2 个)。这里发生的事情是我在最后部分的控制器命名空间中搜索具有特定版本的控制器描述符的子路由。在我的情况下,它总是 2 个(一个用于“GET”,一个用于“POST”请求,为简单起见,我在前面的控制器示例中省略了)。

所以最后我得到了我的问题:

  1. 是否有任何其他(最好更官方和适当的)方法从请求中提取控制器名称?
  2. 是否有任何其他(最好更正式和适当的)方法来解决 KeyNotFoundException 异常,如果我不填充子路由会发生这种情况?
  3. 当托管在 IIS 下时,所有这些都可以工作吗?
0 投票
0 回答
42 浏览

entity-framework - 如何在 OWIN 自托管应用程序中启动应用程序时预加载数据

我需要在我的 OWIN / TopShelf 自托管应用程序中启动应用程序时预加载一些实体框架数据。当这个自托管应用程序启动时,初始化 EF DbContext 和提取数据的技术是什么?这应该在 Startup.cs 文件或其他地方完成吗?

0 投票
1 回答
1050 浏览

c# - WebApi 硬编码控制器路由

我正在尝试编写一个自托管的 WebAPI 服务器。我希望所有路由都转到一个控制器。该控制器可以挑选出 url 的控制器部分并使用它来决定适当的响应。

我有以下路线配置:

我的控制器类称为“HomeController”。我正在尝试将所有 URL 重定向到它。

这是 HomeController 的代码。现在我已经注释掉了对外部逻辑(遥控器)的调用。它应该只是在 Get 操作上返回一个字符串。

我希望http://localhost:9000/api/[AnythingHere]路由到家庭控制器,但是在尝试以下 url 时出现以下错误:http://localhost:9000/api/Home

{"Message":"未找到与请求 URI ' http:// localhost:9000/api/Home'匹配的 HTTP 资源。","MessageDetail":"未找到提供控制器名称以匹配请求 URI 的路由' http://localhost:9000/api/Home '"}

0 投票
1 回答
2555 浏览

azure - 带有 OWIN 自托管侦听器的 Azure Service Fabric

在我的一项无状态服务中,我想包括两个听众:

当我尝试以标准方式注册创建的侦听器时,我遇到了一个问题,即基于 OWIN 的侦听器在初始化后会自动关闭:

诊断事件

负责注册服务的部分:

ServiceManifest 端口设置:

OwinCommunicationListener:

我怎样才能解决这个问题并让这两个听众注册?

0 投票
1 回答
458 浏览

visual-studio - 引用外部包仅具有元数据(无库)时,Nuget 安装本地包失败

我正在尝试使用 Nuget 构建本地包。我的库使用了几个已安装的包,包括“Microsoft.AspNet.WebApi.OwinSelfHost”。OwinSelfHost 包只有一个 .nupkg 文件,没有对应的 lib 或内容文件夹。Nuget 无法尝试查找该包不存在的 .lib 文件。这是调用和输出: nuget.exe install NCR.AS.MGC.ClientProxies -Source C:\Sandbox\MGC\Mgc.ClientProxies\bin\Debug -OutputDirectory C:\Sandbox\MGC\packages.out -ExcludeVersion -无缓存

无法解析依赖项“Microsoft.AspNet.WebApi.OwinSelfHost”。使用的来源:“nuget.org”、“NugetServer”。使用的源:C:\Sandbox\MGC\Mgc.ClientProxies\bin\Debug 尝试收集与项目“C:\Sandbox\MGC\packages”相关的包“NCR.AS.MGC.ClientProxies.1.0.0”的依赖关系信息.out',针对 'Any,Version=v0.0' 尝试使用 DependencyBehavior 'Lowest' 解决包 'NCR.AS.MGC.ClientProxies.1.0.0' 的依赖关系

关于创建本地包的任何建议?

0 投票
1 回答
81 浏览

javascript - 使用 selfhost c# 输出 Json 并使用 javascript 读取响应

我用 c# 创建了一个简单的 selfhost,其中:

当我尝试在 Web 浏览器中打开 url http://localhost:2000/api/test时,正确地看到响应 json: {"server": "10.0.0.1" }。创建网页后:

但我没有看到任何变化,并且在 firefox 的开发工具中出现以下错误:

SyntaxError: JSON.parse: JSON 数据的第 1 行第 1 列的数据意外结束

为什么不工作?

谢谢

0 投票
2 回答
68 浏览

c# - 从服务器应用程序 (REST) 返回 HttpWebResponse

我试图设置HttpWebResponse控制器返回的值,但我无法创建HttpWebResponse对象。

现在我只想设置状态码,但也许我很快HttpWebResponse也需要课程的其他部分。我现在所能做的就是将字符串作为状态返回,这显然是错误的,因为Get方法已经返回了其他数据。

这是我的控制器(只是一个测试应用程序,用于了解 REST 服务器和客户端的实现方式以及它们如何通信):

0 投票
0 回答
310 浏览

c# - 自主机模式下的 Asp.Net WebAPI WebSockets 不起作用

基本上我正在尝试以webapi自托管方式进行网络套接字。

这是一个例子:

问题是它HttpContext.Current始终为空。它在通过 IIS 托管时存在。

webapi我的问题是,如果我无法获取当前上下文,我该如何使用自托管 Web 套接字。

谢谢。

0 投票
0 回答
66 浏览

c# - 我可以在 ASP.net WEB API 4.0 中传递对控制器的引用吗

我有一个 Self Host ASP.net WEB API v.4.0.20710.0,这是我通过 NuGet 获得的旧包。

所以我的问题是是否可以将我的日志记录类引用到控制器,因为它们似乎在我无法访问的外部代码中的某个地方被实例化。

我看到的唯一可能的解决方案是将日志记录类设为静态,但这真的很不舒服。还有其他想法吗?