标签: self-hosting

WCF服务托管在控制台应用程序中

托管在控制台应用程序中的WCF服务可以处理多少负载?它可以像在IIS上托管的WCF一样处理传入的请求吗?

附加说明:请求可以同时到达吗?

我在控制台应用程序中托管了WCF服务.我在Web应用程序中调用此WCF服务.该Web应用程序可能同时有数百个请求.

我已经模拟了一大堆请求,但我无法确定托管WCF服务的控制台应用程序是否实际上同时或按顺序回答它们.

c# wcf .net-4.0 console-application self-hosting

4
推荐指数
1
解决办法
801
查看次数

自签名ASP.NET Web API 2 REST服务的令牌身份验证和授权

我正在使用VS2013和Web API 2使用令牌身份验证通过SSL创建自托管(使用OWIN),RESTful服务.虽然我不是新手开发人员,但这是我第一次看到ASP.NET技术,所以请记住这一点.

除了身份验证和授权部分之外,我已经或多或少地工作了.我完全理解对用户(谁是这个用户?)进行身份验证和授权已经过身份验证的用户访问资源(该用户是否可以访问此特定资源?)的区别.

我的auth过程的一个非常简单的概述如下(为简洁起见做了一些假设):

  1. 未知客户端连接到API,例如GET api/values.
  2. 服务器响应401和此响应标头:"WWW-Authenticate:Token".
  3. 看到这个后,未知客户端知道在这里连接到不同的API端点:POST api/auth(路由到Login功能),提供用户名和密码.
  4. 服务器将尝试确定这是否是有效用户,并且可以接受或拒绝用户,具体取决于凭据的有效性.
  5. (已拒绝)服务器返回错误状态代码(403?).流程结束.
  6. (已接受)服务器创建随机令牌(例如GUID)并将其存储在用户记录中.然后它将令牌发送给客户端.
  7. 现在经过身份验证的客户端重新连接到API,GET api/values,这次也提供令牌.
  8. 用户将资源数据返回给客户端.
  9. ...
  10. 用户可以通过连接到用于登录的相同API来注销:POST api/auth(这次,他的请求将被路由到Logout功能).这将从服务器中删除令牌,客户端也必须删除自己的令牌.

正如您所看到的,这是一个相对简单的过程,但我找不到任何具体而简单的示例来了解如何使用自托管Web API 2实现此目标.

我不需要注册用户或进行任何密码/角色管理等,也没有外部认证.所有有效用户都拥有访问资源的相同权限,并且他们已经在系统中通过我无法控制的单独进程创建(我只能读取他们的凭据进行验证).我发现的大多数示例都是讨论我不需要的安全框架,所以我排除了以下任何一种:基本身份验证,Windows身份验证,表单身份验证,个人帐户,ASP.NET成员身份/身份,OAuth,Thinktecture或任何其他安全框架.

我已经阅读了有关在消息处理程序中进行身份验证的文章以及其他有关在自定义Authorize属性过滤器中进行身份验证的文章,而其他人甚至建议我应该使用新的(在Web API 2中)IAuthenticateFilter属性.这非常令人困惑.您能否以一种非常简单的方式来建议我的目标?任何特定的代码示例都将非常受欢迎,即使它们只是骨架实现或伪代码.我只需要一些想法让我开始.

asp.net authentication authorization self-hosting asp.net-web-api2

4
推荐指数
1
解决办法
7112
查看次数

SignalR自托管Windows服务,侦听消息

我正在尝试构建自托管SignalR的Windows服务。

我已经阅读了诸如 了ASP.Net上的SignalR Self-Host等

我注意到,至少在看来,它们基于广播消息,似乎在收听周围找不到任何东西。

我需要收听服务内的消息以及广播。

我们已经有了背板设置-该站点使用了相同的设置。

在网站上,我可以通过Javascript加入一个小组。如何加入自托管SignalR服务中的群组。

在一个网站上,我在集线器上注册了一个回调。如何在自助服务中注册相同的回调?

我为注册和启动SignalR而准备的一些示例代码是:

GlobalHost.DependencyResolver.UseSqlServer(Settings.Default.ISDBContext);
        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            HubConfiguration hubConfig = new HubConfiguration()
            {
                EnableDetailedErrors = true,
                EnableJSONP = true,
            };

            map.RunSignalR(hubConfig);

        });
Run Code Online (Sandbox Code Playgroud)

然后,我像这样启动我的webApp:

SignalR = WebApp.Start<Startup>(options);

选项是我正在注册的网址。Startup是包含上面的signalR映射的启动类。

我之前没有建立过自托管服务,因此在这里几乎没有什么损失

c# windows-services self-hosting signalr

4
推荐指数
1
解决办法
6658
查看次数

netsh 删除特定端口的所有 urlacl 保留

有没有办法删除特定端口的每个 urlacl 保留。

我的意思是这样的事情是可能的(客户星座):

netsh http add urlacl url=http://localhost:55521/ user="everyone"

netsh http add urlacl url=http://+:55521/ user="everyone"
Run Code Online (Sandbox Code Playgroud)

现在我想删除55521端口的所有保留,这可以是任何ip星座!

顺便说一句,我在 ac# 应用程序中使用 nancy 自主机执行此操作。

c# self-hosting netsh nancy

4
推荐指数
1
解决办法
3876
查看次数

当webApi与HttpSelfHostServer一起运行时,有没有办法添加httpModule?

我有一个MVC4 webapi控制器.它没有无参数构造函数.所以,我使用Windsor依赖解析器,在System.Web.Http.WebHost下工作时一切正常.但是,当我尝试使用HttpSelfHostServer时,我收到异常消息:

Looks like you forgot to register the http module Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule To fix this add &lt;add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" /&gt; to the &lt;httpModules&gt; section on your web.config. If you plan running on IIS in Integrated Pipeline mode, you also need to add the module to the &lt;modules&gt; section under &lt;system.webServer&gt;. Alternatively make sure you have Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 assembly in your GAC (it is installed by ASP.NET MVC3 or WebMatrix) and Windsor will be able to register the …

dependency-injection castle-windsor self-hosting asp.net-mvc-4 asp.net-web-api

3
推荐指数
1
解决办法
1352
查看次数

Web Api与Web托管和自托管

是否有支持自助和网络托管(同时)的最佳做法?

我必须解决许多问题.在自托管autofac下无法正常工作,因为未设置HttpContext.Current并且无法在自托管中访问GlobalConfiguration.

是否还有其他问题需要注意?

web-hosting self-hosting asp.net-web-api

3
推荐指数
1
解决办法
3579
查看次数

使用 Web API 自托管时如何从 HttpClientHandler.CookieContainer 获取 cookie?

我正在尝试为返回 cookie 的 Web API 方法编写集成测试。基于这个问题,我相信我需要设置 HttpClientHandler 的 CookieContainer。

HttpClient 不保存 Cookie

然后,基于这个问题,我认为我需要将此 HttpClientHandler 设置为我的 HttpServer 实例的 InnerHandler,以便我可以链接处理程序。

如何执行 HttpClientHandler 的内存测试

问题是我仍然发现 CookieContainer 是空的。我有一个断言,用于验证响应中是否有包含我期望的 cookie 的标头。这是我的代码:

        // Set up in-memory hosting of Web API
        var config = new HttpConfiguration();
        WebApiConfig.Register(config);

        var cookieJar = new CookieContainer();
        var httpClientHandler = new HttpClientHandler
        {
            CookieContainer = cookieJar,
            UseCookies = true                
        };
        var httpServer = new HttpServer(config)
        {
            InnerHandler = httpClientHandler
        };

        const string loginUrl = "http://localhost/api/authentication/login";
        var uri = new Uri(loginUrl);

        var client …
Run Code Online (Sandbox Code Playgroud)

c# cookies self-hosting asp.net-web-api dotnet-httpclient

3
推荐指数
1
解决办法
4350
查看次数

带有 JWT 和基本身份验证的 HttpListener:如何发送 WWW-Authenticate?(自托管)

我有一个在 mono/.NET 上跨平台运行的自托管 REST 应用程序。一个问题是 HttpListener 管理并阻止 WWW-Authenticate 标头的手动设置。如果您将自己限制为内置的 Basic、NTLM 等身份验证,或者不需要身份验证,那么这很好,但如果您想接受任何其他类型的令牌,则这是一个问题。

我使用带有 REST 风格界面的 JWT 令牌,并使用 Basic[1] auth 进行初始身份验证。在应用程序的另一部分,我正在做类似的事情,但使用自定义令牌和/或基本身份验证作为 API 另一部分的后备。

问题:

如何让 HttpListener 发送“WWW-Authenticate: Basic”质询标头,同时允许非基本授权令牌通过?

我尝试在监听器中设置基本和匿名:

_listener.AuthenticationSchemes = 
    AuthenticationSchemes.Basic | AuthenticationSchemes.Anonymous;
Run Code Online (Sandbox Code Playgroud)

这会导致在任何情况下都不会返回 WWW-Authenticate 标头。我相信这应该允许基本或未经身份验证的连接,并且当我将状态代码设置为 401 (HttpStatusCode.Unauthorized) 时,还应该设置 WWW-Authenticate 质询。但事实并非如此(无论是在 mono 还是 .NET 上)。

如果我只设置 AuthenticationSchemes.Basic,HttpListener 会拒绝所有没有 Basic 样式令牌的连接,这没有任何用处。

明显但蹩脚的解决方法:

目前,我只是违反了 HTTP 规范并在没有 WWW-Authenticate 标头的情况下返回 401。这可行,但会降低与第三方工具的兼容性。

我考虑过使用完全不同的 HttpListener 实现,尽管大多数似乎要么处于原型阶段,要么是它们自己的大型库的一部分。我曾考虑过编写自己的 HttpListener,但此时将整个应用程序移植到 Java 开始显得很有吸引力。我希望找到比完整平台移植或编写自己的库更少工作的建议。

有想法吗?

[1] - 这里需要基本身份验证,以便向后兼容低级脚本和一些其他系统。请假设我了解安全隐患并且正在使用 SSL 等。

c# self-hosting httplistener basic-authentication jwt

3
推荐指数
1
解决办法
1726
查看次数

如何启用Visual Studio项目的TypeScript选项卡,该项目是自托管Web页面的控制台或Windows服务

使用Visual Studio 2015我创建了一个控制台应用程序,用于自托管Owin和嵌入式静态文件.由于Visual Studio不知道它是一个网站项目,它忽略了TypeScript文件.当我转到项目属性时,通常缺少Web项目中的TypeScript选项卡.

如何启用TypeScript选项卡以便我可以配置TypeScript并使用Visual Studio 2015的内置功能来编译TypeScript.

self-hosting typescript owin visual-studio-2015

3
推荐指数
1
解决办法
1034
查看次数

Nancy 503 错误切换到 OWIN 自主机

我有一些目前由 Nancy.Hosting.Self 托管的网络服务

我需要将服务从 Nancy.Hosting.Self 转移到由 Microsoft.Owin.SelfHost 托管,以便我可以使用 OWIN 进行用户身份验证。

从理论上讲,我应该能够简单地用 Owin Startup 类替换我的 NancySelfHost 类。但是,当使用我的 Owin Startup 类运行该服务时,Nancy 返回:“HTTP 错误 503。该服务不可用。”

我目前正在根据构建参数交换托管类。(它们通过TopShelf启动)

启动器:

 #define OWIN
 using Topshelf;

 namespace BasisRESTApi
 {
     public class Program
     {
         private static readonly string _serviceName = "MyRestApi";
         private static readonly string _displayName = "My REST services";
         private static readonly string _description = "Minor RESTful web services for interop.";
         public static void Main()
         {
             HostFactory.Run(x =>
             {
                 x.UseLinuxIfAvailable();
                 // Automate recovery
                 x.EnableServiceRecovery(recover =>
                 { …
Run Code Online (Sandbox Code Playgroud)

authentication self-hosting topshelf nancy owin

3
推荐指数
1
解决办法
943
查看次数