标签: self-hosting

几个服务主机有什么好处?一个ServiceHost是否支持一个端点上的多个同时连接?

我正在考虑自我托管我的WCF服务,而不是使用IIS.对我来说一个很大的问题是我是否需要像IIS那样实例化多个服务主机,或者一个就足够了.

除了安全原因,除了隔离外,多个服务主机是否会提供任何好处?

一个servicehost可以同时在一个端点上提供多个连接吗?

performance wcf self-hosting servicehost

7
推荐指数
1
解决办法
2471
查看次数

使用自托管Nancy上传大型文件示例

有人可以使用在自托管模式下运行的NancyFx发布关于如何上传大文件(例如50MB)的示例.该文件应该从网页发送(method = post; enctype = multipart/form-data).

file-upload self-hosting large-files nancy

7
推荐指数
1
解决办法
5882
查看次数

在自托管控制台应用程序中使用ServiceStack Mini Profiler

是否可以在自托管控制台应用程序中使用ServiceStack Mini Profiler?如果是,我应该在哪里放置探查器启用/禁用代码?在ASP.NET托管的ServiceStack中,它通常位于Application_BeginRequestApplication_EndRequest方法中.

c# profiler console-application self-hosting servicestack

7
推荐指数
1
解决办法
495
查看次数

信号器将IHubContext转换为实际的Hub

我想知道是否可以将结果转换 var hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); 为我实际的ChatHub类.因为GlobalHost.ConnectionManager.GetHubContext<ChatHub>() as ChatHub失败了

在我的ChatHub类中,我有一个方法UpdateTime():

public void SendTimeUpdate(DateTime time, string auth)
{
    Clients.All.UpdateTime(time, auth);
}
Run Code Online (Sandbox Code Playgroud)

我想从我的其他班级称呼它.由于我无法转换为ChatHub并调用SendUpdate,我必须去:

GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.UpdateTime(time, auth);
Run Code Online (Sandbox Code Playgroud)

但是,如果我走这条路,方法SendTimeUpdate不会添加到代理脚本/ signalr/hubs中

有这个问题的解决方案吗?我想获取类型化的Hub实例,而不是直接在IHubContext的Clients属性上调用stuff.

c# self-hosting signalr signalr-hub

7
推荐指数
1
解决办法
2952
查看次数

将证书注册到SSL端口

我有一个Windows服务(作为LocalSystem运行),它自我托管OWIN服务(SignalR),需要通过SSL访问.

我可以在我的本地开发机器上设置SSL绑定 - 我可以在同一台机器上通过SSL访问我的服务.但是,当我转到另一台机器并尝试运行以下命令时,我收到一个错误:

命令:

netsh http add sslcert ipport=0.0.0.0:9389 appid={...guid here...} certhash=...cert hash here...
Run Code Online (Sandbox Code Playgroud)

错误:

SSL证书添加失败,错误:1312

指定的登录会话不存在.它可能已被终止.

我使用的证书是完全签名的证书(不是开发证书),可以在我的本地开发箱中使用.这就是我在做的事情:

Windows服务启动并使用以下代码注册我的证书:

var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
var path = AppDomain.CurrentDomain.BaseDirectory;
var cert = new X509Certificate2(path + @"\mycert.cer");
var existingCert = store.Certificates.Find(X509FindType.FindByThumbprint, cert.Thumbprint, false);
if (existingCert.Count == 0)
    store.Add(cert);
store.Close();
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用netsh和以下代码将证书绑定到端口9389:

var process = new Process {
    StartInfo = new ProcessStartInfo {
        WindowStyle = ProcessWindowStyle.Hidden,
        FileName = "cmd.exe",
        Arguments = "/c netsh http add sslcert ipport=0.0.0.0:9389 appid={12345678-db90-4b66-8b01-88f7af2e36bf} certhash=" + cert.thumbprint …
Run Code Online (Sandbox Code Playgroud)

.net c# self-hosting .net-4.5 owin

7
推荐指数
2
解决办法
7792
查看次数

在OWIN中使用带有WebApi Self Hosted的Simple Injector时,为什么会出现此ActivationException?

我有一个非常简单的Web Api v2.2自我托管在OWIN

public class StartUp
{
    public void Configuration(IAppBuilder appBuilder, IConfigReader configReader)
    {
        var container = new Container();

        container.Register<IConfigReader, ConfigReader>();

        var config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
        appBuilder.UseWebApi(config);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我然后使用我Main()的:

WebApp.Start(baseAddress, appBuilder => 
                new StartUp().Configuration(appBuilder, new ConfigReader()));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行最后一行时,appBuilder.UseWebApi(config);我得到以下异常:

SimpleInjector.dll中发生了'SimpleInjector.ActivationException'类型的第一次机会异常

附加信息:给定类型IHostBufferPolicySelector不是具体类型.请使用其他一个重载来注册此类型.

完整堆栈:

发生SimpleInjector.ActivationException _HResult = -2146233088
_message =给定类型IHostBufferPolicySelector不是具体类型.请使用其他一个重载来注册此类型.
HResult = -2146233088 IsTransient = false Message =给定类型IHostBufferPolicySelector不是具体类型.请使用其他一个重载来注册此类型.Source = SimpleInjector
StackTrace:at SimpleInjector.Advanced.DefaultConstructorResolutionBehavior.VerifyTypeIsConcrete(Type …

self-hosting simple-injector asp.net-web-api owin asp.net-web-api2

7
推荐指数
1
解决办法
2351
查看次数

如何在自托管Web API应用程序中配置OData端点

我正在构建一个OWIN自托管Web API 2服务.我需要此服务来公开OData端点.

传统的IIS托管方法涉及App_Start/WebApiConfig.cs:

using ProductService.Models;
using System.Web.OData.Builder;
using System.Web.OData.Extensions;

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // New code:
        ODataModelBuilder builder = new ODataConventionModelBuilder();
        builder.EntitySet<Product>("Products");
        config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: null,
            model: builder.GetEdmModel());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在我的自托管解决方案中,没有WebApiConfig.cs这样的东西

我在哪里以及如何指定此OData配置?

c# self-hosting asp.net-web-api owin asp.net-web-api-odata

7
推荐指数
1
解决办法
4142
查看次数

SignalR - 在自托管进程中重新启动SignalR的问题

我已经在自托管进程(目前是WinForm主机)中成功运行SignalR.客户端可以与他们的浏览器连接并完美交互.当我需要重新启动游戏领域而不完全杀死主机进程时,问题就出现了.在处理了WebApp.Start()返回的IDisposable之后,我重新加载所有业务数据并再次调用WebApp.Start().它似乎工作,没有异常或警告冒出来,但无论是否有新的浏览器窗口或选项卡,来自浏览器的客户端连接都会失败.我在javascript中启用了SignalR跟踪,并通过Fiddler捕获流量./ negotiate调用有效,但是对于WebSockets的/ connect调用在5秒后超时,然后通过所有其他SignalR回退失败.如果我完全杀死主机进程并重新启动它,一切都会很好.通过每次杀死整个过程手动重启是不可行的.我打开了服务器端日志记录,这是我看到的行为:

SignalR.Transports.TransportHeartBeat Information: 0 : Connection a9f279c9-9dcb-4cc2-806b-dd95e96561b4 is New.
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(a9f279c9-9dcb-4cc2-806b-dd95e96561b4)
SignalR.Transports.TransportHeartBeat Information: 0 : Dispose(). Closing all connections
SignalR.Transports.WebSocketTransport Error: 0 : OnError(a9f279c9-9dcb-4cc2-806b-dd95e96561b4, System.Net.WebSockets.WebSocketException (0x80004005): An internal WebSocket error occurred. Please see the innerException, …
Run Code Online (Sandbox Code Playgroud)

self-hosting signalr

7
推荐指数
0
解决办法
807
查看次数

哪些是自托管您的存储库的优点(和缺点)(换句话说:GitLab与Bitbucket)?

我必须在Bitbucket和GitLab之间决定存储库托管(是的,它们必须是私有的).我过去曾经使用过Bitbucket,但现在我发现了GitLab,我发现让自托管存储库管理器非常有吸引力.但是,我必须证明使用其中一个(特别是在使用GitLab的情况下,因为假设其安装和配置的开销).

我们必须考虑以下因素:

  • 我不确定将安装GitLab的服务器的备份频率(我认为这将是两个选项之间的市长差异,但我不知道Bitbucket是否100%保证他们托管的repos的完整性).
  • 我可以从任何地方使用VMWare Horizo​​n Client访问服务器,因此Bitbucket和自托管的GitLab将在这一点上捆绑在一起.

那么,我应该选择自托管的回购管理器(GitLab),而不是非自托管的(Bitbucket)?

git bitbucket self-hosting gitlab

7
推荐指数
2
解决办法
4640
查看次数

如何管理自主HTTPS的SSL密钥

我有Windows服务,在最终用户的计算机上侦听https请求,在这种情况下是否有可接受的创建或分发私钥的方法?我是否应该打包专门针对localhost请求的真正密钥(例如local.mydomain.com)或生成自签名密钥并在安装时添加受信任的根CA?

如果重要,该服务使用Nancy Self Host处理请求,并在SYSTEM用户上运行.我们有一个运行在https上的Web应用程序,它将向服务发出CORS请求,用户将在标准Web浏览器(> = IE10)上使用它.只有安装了服务的机器才会向其发出请求.

谢谢.

ssl https self-hosting ssl-certificate

7
推荐指数
1
解决办法
916
查看次数