2

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

将来,它将在带有 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 自行托管服务时,这似乎是一个不错的选择,但由于它将很快托管在另一台服务器上,我想避免在应用程序中更改对服务的每次调用.

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

4

0 回答 0