好的,让我们开始吧。 我制作wcf服务并通过Visual Studio 2012在IIS 7.5中发布它。 当我使用WCF测试客户端时,该服务正在运行并且运行良好。
要启用UDP发现,我会对app.config进行一些调整,如下所示:
<system.serviceModel>
<services>
<service name="System_Core.wcf_service">
<endpoint address="" binding="wsHttpBinding" contract="System_Core.IWCF_Service" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint isSystemEndpoint="true" kind="udpDiscoveryEndpoint" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8888" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="False" httpsGetEnabled="False" />
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="True" />
<serviceDiscovery />
</behavior>
</serviceBehaviors>
</behaviors>
该文件在发布时也复制到web.config。简而言之,wcf服务本身运作良好。
问题在于: 我做了另一个需要在网络上发现wcf服务的项目。但该发现仅在首次调用或手动导航到浏览器中的.svc之后才有效。当我在IIS7管理器中重新启动IIS或wcf时,发现返回失败/没有收到任何响应。似乎wcf没有自动启动。我检查IIS配置它自动启动。该网站本身也设置为自动启动。我甚至在applicationHost.config中添加了一些这些行,基于Web上的一些推荐:
<site name="WCF" id="1" serverAutoStart="true">
<application path="/" serviceAutoStartEnabled="true" >
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\WCF" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8888:" />
</bindings>
</site>
<applicationPools>
<add name="DefaultAppPool" startMode="AlwaysRunning" managedRuntimeVersion="v4.0" />
<add name="ASP.NET v4.0" managedRuntimeVersion="v4.0" />
<add name="ASP.NET v4.0 Classic" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" />
<applicationPoolDefaults>
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="false" />
</applicationPoolDefaults>
</applicationPools>
仍然无法正常工作! IIS称它“已启动”,Site表示它已“启动”,但发现仍然只能在浏览器中手动调用服务.svc文件之后才能运行。当您重新启动服务器或站点时,它将返回不起作用。我相信任何服务都应该在IIS启动时启动,但不会。
我在互联网上发现其他一些人有同样的问题而仍然没有决心。
答案 0 :(得分:0)
我放弃并跳过所有困惑并安装IIS的初始化页面扩展,由伟大的Schwammy在此页面中描述:
http://www.schwammysays.net/auto-starting-websites-on-iis-7-5/
它很棒,很简单!