假设我们有 2 个具有以下布局的项目
- “网络”项目
- global.asax (我想到了这个在 eg 内注册的目的地
void Application_Start(System.Object sender, System.EventArgs e
) - 网络配置
- global.asax (我想到了这个在 eg 内注册的目的地
- 项目“wcf”
- 演示服务.cs
- IDemoService.cs
web.config
看起来像这样
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="fooBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="wcf.DemoService"
behaviorConfiguration="fooBehavior">
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<endpoint address=""
binding="wsHttpBinding"
contract="wcf.IDemoService" />
</service>
</services>
</system.serviceModel>
</configuration>
所以......现在......某个地方(如上所述,我想到了global.asax
)我需要注册,当浏览到URI wcf.DemoService
时得到解决,对于 mex 请求,wcf.IDemoService
得到解决以读取属性以获取 WSDL。
这通常可以通过创建一个.svc
文件并将标题放在第一行来完成,例如:
<%@ ServiceHost Language="C#" Debug="true" Service="wcf.DemoService" %>
在例如控制台应用程序中
var serviceHost = new ServiceHost(typeof (wcf.DemoService));
serviceHost.Open();
并将其与host
元素内的service
元素结合以指定URI - 或使用另一个 ctor-overloadServiceHost
但我宁愿进行静态注册(或任何web.config
适用于 IIS 7.5 的注册)——这可能吗?如果是这样,怎么做?