Tag: 自托管

自托管WCF服务的多个实例

我们有一个“工作”服务从c#中的控制台应用程序运行,为了开发我们总是运行这个服务的单个实例,它获取数据块并执行一些计算,这些数据块由另一个服务提供(跟踪剩下多少数据等) 现在在QA中,我们希望同时运行“worker”服务的多个实例(在同一台机器上)。但是,只要第二个实例启动,我们就会得到exception: TransportManager无法使用NetTcpPortSharing服务侦听提供的URI:URI已在服务中注册。 我们正在使用netTcpBinding并且端点地址被硬编码到app.config中并保持不变,因此我假设我们收到此错误。 申请代码: var host = new ServiceHost(typeof(WorkerService)); host.Open(); 我们如何为每个实例提供不同的URI,以便至少端口保持不变? 或者如果有不同的方法来运行同一服务的多个实例?

停止自托管owin服务器时完成当前请求

我有OWIN服务器作为控制台应用程序的一部分。 你可以在这里看到主要方法: class Program { public static ManualResetEventSlim StopSwitch = new ManualResetEventSlim(); static void Main(string[] args) { Console.CancelKeyPress += (s, a) => { a.Cancel = true; StopSwitch.Set(); }; using (WebApp.Start(“http://+:8080/”)) { Console.WriteLine(“Server is running…”); Console.WriteLine(“Press CTRL+C to stop it.”); StopSwitch.Wait(); Console.WriteLine(“Server is stopping…”); } Console.ReadKey(); Console.WriteLine(“Server stopped. Press any key to close app…”); } } […]

如何在生产中部署Owin自托管应用程序?

我有一个Asp.Net Owin Self Hosted WebApi应用程序。 该应用程序可以作为Windows服务安装在生产环境中。 目前我正在运行并通过url http:// localhost:8000成功访问该服务。 现在我想将服务映射到域以从公共网络访问它。 我有一个注册域名并可以控制它。 例如:www.myservice.com 如何将域指向自助托管应用程序的WebApi服务?

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); }); 然后我像这样启动我的webApp: SignalR = WebApp.Start(options); 选项是我正在注册的url。 Startup是包含上面signalR映射的启动类。 由于我之前没有建立自助托管服务,所以很少丢失

使用Javascript客户端的WCF自托管WebSocket服务

我有这个WCF自托管的WebSocket服务代码: 主要: //Create a URI to serve as the base address Uri httpUrl = new Uri(“http://192.168.1.95:8080/service”); //Create ServiceHost ServiceHost host = new ServiceHost(typeof(WebSocketService), httpUrl); //Add a service endpoint host.AddServiceEndpoint(typeof(IWebSocket), new NetHttpBinding(), “”); //Enable metadata exchange ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; host.Description.Behaviors.Add(smb); //Start the Service host.Open(); Console.WriteLine(“Service is host at ” + DateTime.Now.ToString()); […]

使用SelfHosting时,我可以自动托管app.config中的所有服务吗?

我正在编写一个需要托管多个WCF服务的应用程序。 WCF的优势之一是能够通过在app.config文件中指定设置来配置服务而无需重新编译。 在自托管时,似乎没有一种开箱即用的方式来自动托管app.config文件中的服务。 我发现这个问题提到了一个可能的解决方案,即在运行时动态枚举app.config中列出的服务,并为每个服务创建一个ServiceHost。 但是,我的服务,合同和托管应用程序都在不同的程序集中。 这会导致Type.GetType(string name)无法找到我的服务类型(返回null ),因为它是在不同的程序集中定义的。 如何动态地托管app.config文件中列出的所有服务(即,在我的自托管应用程序中没有硬编码new ServiceHost(typeof(MyService)) ? 注意:我的app.config是使用Visual Studio 2010中的“WCF配置编辑器”生成的。 另请注意:我的主要目标是由app.config文件驱动,因此只有一个配置点。 我不想在一个单独的位置配置它。 编辑 :我能够读取app.config文件(请参阅此处 ),但需要能够解析不同程序集中的类型。 编辑 :下面的答案之一促使我尝试在app.config中指定AssemblyQualifiedName而不仅仅是基本类型名称。 这可以解决Type.GetType()问题,但是无论我如何获得类型, ServiceHost.Open()现在都会失败并出现InvalidOperationException : // Fails string typeName = typeof(MyService).AssemblyQualifiedName; Type myType = Type.GetType(typeName); ServiceHost host = new ServiceHost(myType); host.Open(); // throws InvalidOperationException // Also fails Type myType2 = typeof(MyService); ServiceHost host2 = new ServiceHost(myType2); […]

如何在WCF 4.5中使gzip压缩工作

WCF 4.5支持GZIP,无需第三方库或手写扩展。 我通过TCP Binding得到它,但找不到通过HTTP绑定使其工作的方法。 我的wcf – 服务是自我托管在Windows服务中。 插件:我不允许使用IIS; 我无法切换到任何WCF替换。 这适用于gzip: binding=”customBinding” bindingConfiguration=”tcpCompressionBinding” name=”tcp” 这就是我目前用于http的内容: binding=”basicHttpBinding” bindingConfiguration=”httpBinding” name=”http” 该文档并没有真正帮助我: http : //msdn.microsoft.com/en-us/library/dd456789.aspx 。 但是,据此,它应该工作: 从WCF 4.5开始,WCF二进制编码器增加了对压缩的支持。 使用CompressionFormat属性配置压缩类型。 客户端和服务都必须配置CompressionFormat属性。 压缩适用于HTTP,HTTPS和TCP协议。 如果客户端指定使用压缩但服务不支持它,则抛出协议exception,指示协议不匹配。 有关更多信息,请参阅选择消息编码器

HttpSelfHostServer和HttpContext.Current

我正在开发一个自托管的ASP.NET web api-application。 一切正常,但现在我正在努力与HttpContext : 我需要从客户端保存会话信息。 但是HttpContext.Current总是为null。 所以很明显我的HttpSelfHostServer不能使用静态HttpContext-Class。 我不明白的是:为什么……? 我无法想办法告诉HtttpSelfHostServer和HttpSelfHostConfiguration都不能使用HttpContext 。 这就是我正在做的事情: 创建HttpSelfHostConfiguration 1.1添加Service-Resolvers和Routes 1.2添加自定义UserNamePassword-Validator 使用config创建新的HttpSelfHostServer实例 2.1 server.OpenAsync().Wait() 任何帮助我如何告诉我的服务器使用HttpContext.Current非常感谢! 干杯!