首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的网站托管我的WCF服务?

如何在我的网站托管我的WCF服务?
EN

Stack Overflow用户
提问于 2012-04-30 01:13:46
回答 3查看 22.9K关注 0票数 20

我是WCF的新手。我已经开发了一个示例WCF服务。我的服务使用basicHttp绑定。

我使用WAS在本地IIS 7.5中托管我的服务,它工作得很好。现在我想在我的网站上托管我的服务。

我在Google上搜索,但那里的大多数都托管在IIS的localhost中。请告诉我该怎么做?最好参考一些教程或分步指南。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-30 02:17:39

我相信你基本上有两个选择:

选项1- "bin“部署(首选选项)

  1. 将您的 WCF 服务编译为 DLL(类库)
  2. 在 IIS 中创建网站
  3. 将 WCF DLL 复制到网站的 .\bin 文件夹中
  4. 在该网站中创建一个 *.svc 文件
  5. 在网站文件夹中添加适当的 web.config 以定义您的端点和服务配置等。

您的WCF服务现在将可以在网站的基地址,加上*.svc文件的名称,例如

代码语言:javascript
复制
http://myserver/someweb/Myservice.svc

您的*.svc将如下所示:

代码语言:javascript
复制
<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService"  %>

Service=属性表示实现服务的类-使用其名称空间完全限定。

选项2-将内容放入 App_Code

  1. 在 IIS 中创建网站
  2. 将所有与 WCF 相关的 *.cs 文件直接放入 .\App_Code 文件夹
  3. 在该网站中创建一个 *.svc 文件
  4. 在网站文件夹中添加适当的 web.config 以定义您的端点和服务配置等。

您的WCF服务现在将可以在网站的基地址,加上*.svc文件的名称,例如

代码语言:javascript
复制
http://myserver/someweb/Myservice.svc

您的*.svc将如下所示:

代码语言:javascript
复制
<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %>

一个简单的示例web.config可能如下所示:

代码语言:javascript
复制
<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="WithDebug">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <services>
    <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="WithDebug">
      <endpoint
          address=""
          binding="basicHttpBinding"
          contract="SimpleWCF.IHelloIndigoService" />
      <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />
    </service>
  </services>
</system.serviceModel>

您只需定义您的<service>标记--再一次:name=表示实现服务的类--用它的名称空间完全限定。它必须至少包含一个端点- "mex“端点是可选的-但非常有用,特别是对于开发和测试。它允许客户端“发现”服务并获取其服务描述,以便与其交互。

一旦您的服务被部署到IIS中,您就可以使用一个工具来查看它的运行情况,比如随WCF免费提供的WCF Test Client,或者SoapUI,它是一个通用的SOAP测试实用程序(有一个免费的版本供您使用)。

票数 36
EN

Stack Overflow用户

发布于 2015-11-24 22:01:42

旧线,如果有人找到它..。但是除了你的*.svc,你也可以在你的global.asax中创建:

代码语言:javascript
复制
static Global()
{
    RouteTable.Routes.Add(new ServiceRoute("ExternalServices/SOAP/test", new     ninjectServiceHostFactory(), typeof(testService)));
}
票数 3
EN

Stack Overflow用户

发布于 2018-07-03 20:33:25

除了马克的回答之外,如果您像下面这样向*.svc文件添加工厂属性,则不需要对主项目中的web.config文件进行任何更改。让我再重复一遍。在web.config文件中没有大量的乱七八糟的东西,让它保持原样。这是因为svc文件中的Factory属性负责处理所有问题。

代码语言:javascript
复制
<%@ ServiceHost Language="C#" Debug="true" Service="WCF_Simple_Service.HelloIndigoService" Factory="System.ServiceModel.Activation.WebServiceHostFactory"  %>

但是我必须说,当你调用你的服务时,它会给出endpoint not found错误。但是当你在你的服务中调用你的方法时,它们都会工作。在restful wcf中测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10374131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档