我是WCF的新手。我已经开发了一个示例WCF服务。我的服务使用basicHttp绑定。
我使用WAS在本地IIS 7.5中托管我的服务,它工作得很好。现在我想在我的网站上托管我的服务。
我在Google上搜索,但那里的大多数都托管在IIS的localhost中。请告诉我该怎么做?最好参考一些教程或分步指南。
发布于 2012-04-30 02:17:39
我相信你基本上有两个选择:
选项1- "bin“部署(首选选项)
.\bin 文件夹中*.svc 文件 web.config 以定义您的端点和服务配置等。您的WCF服务现在将可以在网站的基地址,加上*.svc文件的名称,例如
http://myserver/someweb/Myservice.svc您的*.svc将如下所示:
<%@ ServiceHost Language="C#" Debug="true"
Service="WCF_Simple_Service.HelloIndigoService" %>Service=属性表示实现服务的类-使用其名称空间完全限定。
选项2-将内容放入 App_Code
*.cs 文件直接放入 .\App_Code 文件夹*.svc 文件web.config 以定义您的端点和服务配置等。您的WCF服务现在将可以在网站的基地址,加上*.svc文件的名称,例如
http://myserver/someweb/Myservice.svc您的*.svc将如下所示:
<%@ ServiceHost Language="C#" Debug="true"
Service="Service"
CodeBehind="~/App_Code/Service.cs" %>一个简单的示例web.config可能如下所示:
<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测试实用程序(有一个免费的版本供您使用)。
发布于 2015-11-24 22:01:42
旧线,如果有人找到它..。但是除了你的*.svc,你也可以在你的global.asax中创建:
static Global()
{
RouteTable.Routes.Add(new ServiceRoute("ExternalServices/SOAP/test", new ninjectServiceHostFactory(), typeof(testService)));
}发布于 2018-07-03 20:33:25
除了马克的回答之外,如果您像下面这样向*.svc文件添加工厂属性,则不需要对主项目中的web.config文件进行任何更改。让我再重复一遍。在web.config文件中没有大量的乱七八糟的东西,让它保持原样。这是因为svc文件中的Factory属性负责处理所有问题。
<%@ ServiceHost Language="C#" Debug="true" Service="WCF_Simple_Service.HelloIndigoService" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>但是我必须说,当你调用你的服务时,它会给出endpoint not found错误。但是当你在你的服务中调用你的方法时,它们都会工作。在restful wcf中测试。
https://stackoverflow.com/questions/10374131
复制相似问题