C# - WCF - 从IIS到自托管的Web服务

时间:2013-01-22 19:04:25

标签: c# winforms wcf iis

我正在更新连接到访问数据库的应用程序,该数据库缺乏任何安全性。

将来,它将位于带有SQL数据库的IIS服务器上,因此我选择创建一个Web服务来添加额外的安全层。该应用程序适用于Web服务和.NET开发服务器。

我可以在一个月内访问服务器,但是应用程序需要在一周内发布,所以我决定让应用程序自托管服务,并使用访问数据库,直到服务器准备就绪。

实际上,我的解决方案中有两个项目:AppServer和AppClient(带有对AppServer的Web服务引用)。当应用程序运行时,我可以使用Web浏览器访问该服务。

如何轻松自我托管我的服务,以便在主机准备好后将主机切换到IIS?

我尝试过使用ServiceHost,但由于它是一个Windows窗体应用程序并且遇到滞后和超时,因此效果不佳:

Uri httpUrl = new Uri("http://localhost:53333/AppServer.svc");
ServiceHost host = new ServiceHost(typeof(AppServerClient), httpUrl);
host.AddServiceEndpoint(typeof(IAppServer), new WSHttpBinding(), "");

ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);

host.Open();

我发现在不同的线程中运行服务的代码:http://www.codeproject.com/Articles/16299/Hosting-WCF-services-in-a-Windows-Forms-Applicatio

我将此代码添加到我的应用程序中(URL与服务引用相同)

ThreadedServiceHost<AppServerClient, IAppServer> host = new ThreadedServiceHost<AppServerClient, IAppServer>("http://localhost:53333/AppServer.svc", "", new WSHttpBinding());

当我运行我的应用程序时,我收到消息

Http://localhost:53333/AppServer.svc connection impossible. 
TCP error code 10061: No connection could be made because the target machine 
actively refused it 127.0.0.1:53333.

当我使用网络浏览器时,收到以下消息:您已创建服务。要测试此服务,您需要创建一个客户端并使用它来调用该服务。

我在通道工厂上读了一下,当你从a到z自己托管服务时,这似乎是一个不错的选择,但由于它很快将托管在另一台服务器上,我想避免不得不改变对服务的每次调用在申请中。

我真的很感激帮助解决这个问题。

0 个答案:

没有答案