Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows服务承载的WCF服务的IIS代理_C#_Wcf_Iis_Proxy - Fatal编程技术网

C# Windows服务承载的WCF服务的IIS代理

C# Windows服务承载的WCF服务的IIS代理,c#,wcf,iis,proxy,C#,Wcf,Iis,Proxy,我有一个Windows服务,它通过net.tcp通道公开WCF服务 现在,我希望此服务通过IIS公开,而不在其中托管。通过这样做,我将能够维护Windows服务中的状态,并且我将受益于底层IIS身份验证和安全性 仅仅通过使用一些配置就可以做到这一点吗?也许是一种代理或传递 更新 我为什么要这么做?一个好问题: 某些进程以预定的时间间隔异步运行 IIS正在回收应用程序池,为了触发它,通常应该发出web请求,以便启动应用程序池 我无法在Windows服务中将该服务直接公开为Web服务,因为IIS已

我有一个Windows服务,它通过net.tcp通道公开WCF服务

现在,我希望此服务通过IIS公开,而不在其中托管。通过这样做,我将能够维护Windows服务中的状态,并且我将受益于底层IIS身份验证和安全性

仅仅通过使用一些配置就可以做到这一点吗?也许是一种代理或传递

更新

我为什么要这么做?一个好问题:

  • 某些进程以预定的时间间隔异步运行

  • IIS正在回收应用程序池,为了触发它,通常应该发出web请求,以便启动应用程序池

  • 我无法在Windows服务中将该服务直接公开为Web服务,因为IIS已安装并绑定到我要使用的IP地址

  • 如果我想使用自己的TLD为许多客户机公开服务,我不想在每个网站上运行相同的进程(可能是为了独占锁,或者只是为了内存/CPU使用)


也许这澄清了一点需要…

不,您必须在IIS中实现整个新层。您将公开新的WCF服务,该服务将调用托管在Windows服务中的WCF服务。真的需要吗?为什么不直接在IIS中托管服务,或者不在Windows服务上公开HTTP端点?您在Windows服务中保持什么状态?

我以前从未见过这种安排。你能描述一下这样做的好处吗?我只考虑过将其托管在服务或IIS中。我以前从未考虑过混合方法。我更新了问题…我无法直接公开Web服务,因为IIS使用IP地址/端口组合。此外,有些任务应在一天中的特定时间运行,此时IIS可能会被回收或无法启动(因为应用程序池是由web请求触发的)。您是否在该服务器上使用IIS?最简单的方法是释放IIS上的端口(关闭阻止端口的站点)并在Windows服务中使用它。但是,如果将IIS用于其他应用程序,则不可能。还可以考虑使用另一个端口来进行Windows服务的HTTP通信。否则你将不得不按照我在回答中的建议去做。是的,使用了IIS,防火墙正在阻止其他端口。。。如果没有更好的解决方案,我将只创建一对一层,正如您所说的。如果Windows服务与IIS在同一服务器上,请考虑使用NETAMEDIPIPPEND来进行它们之间的通信。它只能用于同一台机器上的通信,并且比Net.Tcp具有更好的性能。