问题标签 [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 投票
0 回答
2579 浏览

c# - WebRequest System.Net.WebException:无法连接到远程服务器端口号在异常中更改

我有两个使用面向 .Net 框架 4.0 的System.Web.Http.SelfHost的自托管 .Net 应用程序,两个应用程序都通过 https 进行通信。

第一个应用程序使用端口:3287,第二个应用程序使用端口:3286

当我使用HttpWebRequest类从第一个应用程序调用第二个应用程序时,我得到了这个异常

这是我的 C# 代码

因为我正在调用端口 3286,但在异常日志中端口号更改为 49543。

如果我通过邮递员调用我的应用程序,我可以得到它的响应。

证书 localhost.company.com 映射到 127.0.0.1,我也映射到了主机文件中。

0 投票
0 回答
65 浏览

c# - 在 C# 控制台自托管 Web API 中实现 oAuth2.0 时出错

一旦谷歌登录过程完成,我就会得到localhost(portnumber)://signin-google?state=blahblahblah...。

下面是 API 运行的主要入口点。

下面是我的 startup.cs 类代码

执行谷歌登录挑战页面的控制器是

我使用谷歌授权的控制器是

一切正常 1. 当应用程序启动时,它会检查谷歌登录 2. 如果没有,它将重定向到谷歌登录页面 3. 登录谷歌后,它会重定向回 l​​ocalhost(portnumber)://signin-google?state =哈哈哈哈哈哈。。

我想它应该重定向到实际的 api - 在我的情况下它应该有http://localhost:portnumer:/api

以下是用于快速参考的跟踪捕获文件 - Trace-log-is-here

先感谢您..:)

源代码 - https://github.com/BDChaudhari90/OAuthGoogleSelfHost

0 投票
1 回答
474 浏览

c# - Owin/System.Web.Http.SelfHost - 迁移到 .NET Core 后无法启动

我通过创建一个新项目、导入代码和安装依赖项将项目从 .NET Framework 迁移到 .NET Core。一切都很顺利,除了 API 组件。以前我使用过System.Web.Http.Selfhost,但是现在当我尝试运行该程序时,我得到以下异常:

System.TypeLoadException HResult=0x80131522 Message=无法从程序集“System.ServiceModel,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”加载类型“System.ServiceModel.HostNameComparisonMode”。Source=mBot StackTrace:在 C:\Users\maren\source\repos\mBot-Admin\mBot\Program.cs 中的 mBot.Program.d__2.MoveNext() 处:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start [的第 70 行TStateMachine](TStateMachine& stateMachine) at mBot.Program.Run() at mBot.Program.Main(String[] args) 在 C:\Users\maren\source\repos\mBot-Admin\mBot\Program.cs:line 28

它发生在这一行,注释掉该行使程序成功启动:
https
://awau.moe/ad25d4.png 此时我应该注意的Config.BotConfig.ApiPort是,8080
我也尝试使用 OWIN 托管的值是,如这似乎是更新的版本。我得到以下信息:

System.Reflection.TargetInvocationException HResult=0x80131604
Message=异常已被调用的目标抛出。
Source=System.Private.CoreLib StackTrace: 在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 在 Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context) 在 Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options) 在 Microsoft.Owin.Hosting.ServerFactory.ServerFactoryAdapter.Create(IAppBuilder builder)在 C:\Users\maren\source\repos\mBot-Admin\mBot\Program.cs 中的 mBot.Program.d__2.MoveNext() 处:System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 处的第 47 行在 System.Runtime mBot.Program 中的 .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)。C:\Users\maren\source\repos\mBot-Admin\mBot\Program.cs 中的 Main(String[] args):第 28 行

内部异常 1:HttpListenerException:访问被拒绝

https://awau.moe/21800e.png

我不介意我使用 OWIN 还是 Selfhost,只要它有效

有谁知道这可能是什么原因?使用 8080 端口不是我的帐户的权限,我之前已经添加过,它仍然适用于旧代码。

我正在使用的当前代码位于https://gitlab.com/marens101/mBot-Admin/tree/rewrite/mBot
- 网络服务器的主要代码位于Program.cs第 45-55 行。OWIN 和 SelfHost 都在那里,都被注释掉了。
- OwinStartup 对象位于API/OwinStartup.cs


更新:我现在将 ASP.NET Core 与 Kestrel 一起使用(感谢@Lex Li),除了应用程序不再关闭未处理的异常之外,这主要是有效的,这非常重要。相反,与我的其他 API 的连接已关闭,但网络服务器仍在运行,并且应用程序没有退出。有谁知道解决这个问题的方法?

0 投票
1 回答
637 浏览

c# - 自托管 owin 应用程序中的混合授权(Windows NTLM 和匿名)不起作用 - “此请求的授权已被拒绝”

我正在尝试开发自托管的 OWIN WebApp。一切正常,直到我尝试集成 Windows (NTLM) 身份验证。如果仅激活了 IntegratedWindowsAuthentication,则 Windows 身份验证工作正常。但我需要一些要求保持匿名。

我已经发现我必须启用两种身份验证方法:

但在这种情况下,我得到“此请求的授权已被拒绝”。使用 Chrome 作为客户端 ( http://localhost:9009/api/test ) 进行了测试。

请帮忙。

OWIN启动类:

主程序:

测试控制器:

0 投票
1 回答
160 浏览

c# - SignalR 应用程序启动,在 http 上运行,但不在 https 上:意外关闭的连接

我在使用 VS2015 FW 4.6、SignalR 2.3.0 构建的 Windows 服务中有一个自托管 SignalR 应用程序。使用端口 6286 (https) 和 6287 (http) 和“*”作为 IP,这已经运行了 2 年多。我想将这些端口分别切换到 80 和 443 并将通配符证书应用到 443。由于有网站在 IP 192.168.100.7 上使用证书,我向我的服务器添加了另一个 IP 地址(192.168.100.3)应用了证书和:

我可以通过以下方式验证成功:

因此,我使用以下内容启动 WebApp:

他们似乎开始正常,没有错误,如果我使用http://192.168.100.3/signalr/hubs它工作正常。但是,https: //192.168.100.3:443/signalr/hubs给出了“意外关闭的连接”错误。

我做错了什么,还有什么要为 https 设置的吗?

0 投票
2 回答
1094 浏览

c# - 自托管 WCF 可以连接到 localhost 但无法远程连接

我有一个自托管的 C# WCF .Net 4.6.1 Windows 服务,它与另一个自托管的 WCF 服务通信。当两个服务都在同一台服务器上时,这可以正常工作。但是,当我将服务器移动到另一台计算机时,我收到此错误:

System.ServiceModel.CommunicationException:套接字连接已中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。两台计算机上都没有运行防火墙,并且在使用http://192.168.1.129:6253/eTutorWcfService(在应用程序中使用 net.tcp)时得到响应。

客户app.config

服务器app.config

客户端代码:

当客户端尝试连接时,服务器的输出窗口会显示一个SecurityTokenValidationException但我不确定该怎么做,或者它是否意味着相关的东西。我确定这与安全性有关,但我不知道在哪里添加什么。

0 投票
1 回答
1703 浏览

c# - 如何在 asp.net 自托管 API 中启用 CORS?

我在 asp.net 中创建了一个自托管 Web API,当我从 POSTMAN 调用它时它工作正常,但是当我从浏览器调用它时它给出以下错误。

从源“ http://localhost:4200 ”访问“ http://localhost:3273/Values/GetString/1 ”处的 XMLHttpRequest已被 CORS 策略阻止:没有“访问控制-A”

下面给出的是我的服务类

0 投票
0 回答
526 浏览

c# - 当应用程序运行多个线程时,Owin selffhost Web 服务器响应缓慢

在应用程序运行多个线程的情况下,我对 owin 自托管 Web 服务器的响应能力有一个奇怪的问题。

我提供了一个演示问题的简单示例:

申请代码:

网络服务器代码:

用过的包:

我试图让服务器运行线程优先,但它没有帮助。在最初的 30-40 秒后,Web 服务器开始正确响应。

提前感谢您的任何帮助或建议。

0 投票
2 回答
51 浏览

c# - 连接到 WebAPI2 端点(路由)会为控制器抛出 Http 代码 503,而另一个控制器工作正常

我正在使用带有 WebAPI2 的 Owin 自托管。我有两个控制器类并使用属性路由。其中之一具有以下签名:

这个工作正常,动作方法被触发。

另一个控制器具有以下签名:

当我尝试连接到其中任何一个时,我得到 503(服务不可用)响应。

我的 Startup 类初始化如下:

我也尝试使用传统路由,但仍然是同样的问题。

这也会抛出 503 状态代码如果我在第二个控制器中更改 Route 前缀,如下所示,那么它可以正常工作:

根据我的要求,我无法更改端点。

我不确定这里出了什么问题,任何帮助将不胜感激。

0 投票
2 回答
679 浏览

c# - 使用 OWIN WebApi 自托管 Unity 的每个请求的生命周期

我正在使用 OWIN 自托管构建 WebApi 服务(可在控制台模式下运行或作为 Windows 服务运行 - 最终部署为服务,控制台模式用于调试/开发)。我在 Unity 注入的每个请求生命周期方面遇到问题。

我之前已经构建了部署为 IIS WebApi 的其他服务;我添加了 Unity Mvc nuget 和基本的 Unity nuget,按照说明进行操作,一切正常。

在OWIN自托管环境下,我对默认类型注册和注册没有问题ContainerControlledLifetimeManager,但是我无法开始PerRequestLifetimeManager工作。一方面,UnityMvcActivator不会像 IIS 那样在 OWIN 自托管下自动启动。如果我在这样做时显式调用UnityMvcActivator.Start,则对注册类型的解析尝试PerRequestLifetimeManager会导致 InvalidOperationException并显示以下消息:

PerRequestLifetimeManager 只能在 HTTP 请求的上下文中使用。此错误的可能原因是在非 ASP.NET 应用程序上使用生命周期管理器,或者在与适当同步上下文无关的线程中使用它。

可以PerRequestLifetimeManager使用 OWIN 自托管,还是依赖 IIS?如果它可以在 OWIN 自托管下工作,我如何才能UnityMvcActivator正确启动并注册我的注入类型?如果PerRequestLifetimeManager与 OWIN 自托管不兼容,我还能如何注册具有每个请求生命周期的类型?

UnityConfig 的一部分:

UnityMvcActivator(在 NuGet 中提供,除了一个未注释的行):

编辑

似乎 MVCPerRequestLifetimeManager在我尝试使用它的上下文中不起作用,但我已经设计了我认为使用 OWIN 中间件的解决方法,如下所示:

我没有按类型注册,而是像这样注册工厂:

我现在的问题是:我的解决方法是否包含任何缺陷或弱点?