2014-11-21 113 views
1

我已经编写了一个WCF服务,负责访问MySQL数据库,并最终编写一个消费该服务的C#客户端应用程序。如何托管并连接到连接到数据库的远程WCF服务?

但是我希望客户能够远程访问服务。为此,什么是托管/端点配置的理想方法和/或如何从远程客户端访问服务。

我已阅读了以下教程和其他一些教程,但仍不太了解应用程序域,托管,远程访问概念,我也不知道如何远程连接。

http://msdn.microsoft.com/en-us/library/bb332338.aspx
Can a client remotely access WCF self-hosting Service?

任何好的教程,示例代码,建议或想法还是我吠叫完全错了?

在此先感谢

+0

感谢您的链接,我目前正在按照教程来设置IIS,我会让你知道我是如何继续前进的。 – 2014-11-21 23:13:33

回答

0

我已经看到这种情况,最好的办法是主办IIS服务,最好是IIS 7的集成。

这是在IIS上托管WCF服务的链接。 http://msdn.microsoft.com/en-us/library/ms733766%28v=vs.110%29.aspx

托管服务实际上相对简单,只需几分钟。

然后,您可以通过向C#项目添加服务引用来引用托管服务,或甚至通过点击发现(如果尚未托管)来本地引用。如果你有它托管,然后添加您在IIS 7中定义的URL。如果您没有托管,只需将WCF服务和C#项目放在同一个解决方案下,然后点击发现。

以下是用于向项目添加服务引用的链接。 http://msdn.microsoft.com/en-us/library/bb628652.aspx

您将要建立一个app.config文件或web.config文件,这取决于你的类型的应用程序,让您可以定义你的C#项目将如何与您的服务进行交互。什么是我的数据请求长度,超时,缓冲区大小,流式传输或缓冲传输等。

样品:

<bindings> 
    <binding name="MyBindingConfiguration" closeTimeout="00:30:00" 
     openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" 
     textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" 
     messageEncoding="Text"> 
</bindings> 
<client> 
     <endpoint address="http://localhost:55010/MyService.svc" 
     binding="basicHttpBinding" bindingConfiguration="MyBindingConfiguration" 
     contract="IMyWcfInterface"/> 
</client> 

让我知道,如果这有助于。

+0

我已经安装IIS,如图所示,但当我去添加一个应用程序到默认网站时,我得到一个“无效的应用程序路径”错误。 – 2014-11-22 11:03:21

+1

在否定了由于未正确安装以及稍微错误配置而导致的各种服务器错误之后,我现在有一个似乎可以正常工作的服务(我可以连接它并在浏览器中获得正确的页面)。我很快就会设置客户端,但看起来更容易。感谢您对此的指导。 – 2014-11-22 23:07:07

+0

是否有可能允许用户在运行时更改他们希望连接的服务的地址而不使用SOAP,前提是他们使用相同的代码和asp.net版本来运行该服务,只是在不同的地址? – 2014-11-23 21:32:30

0

对于托管,我会推荐使用IIS和http绑定,该机制与托管Web应用程序类似。关于访问IIS托管的wcf服务,您只需要向客户端应用程序添加服务引用(它将自动生成可用于访问服务的代理类)。你可以找到更多的细节here