问题描述:
网上找了一个WCF示例,示例是通过控制台程序启动WCF服务,App.config配置文件如下:
<?xml version="1.0"?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="json"> <enableWebScript /> </behavior> </endpointBehaviors> </behaviors> <services> <service name="Host.Service"> <endpoint address="json" binding="webHttpBinding" contract="Host.IService" behaviorConfiguration="json"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="http://localhost:8732/Mush/Host/Service/"/> </baseAddresses> </host> </service> </services> </system.serviceModel> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
在浏览器中通过http://localhost:8732/Mush/Host/Service/json/getData访问,返回正常。
现在将相同的契约及实现文件放入新建的WCF服务程序Service.svc中,web.config文件内容如下:
<?xml version="1.0"?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5"/> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="json"> <enableWebScript /> </behavior> </endpointBehaviors> </behaviors> <services> <service name="Host.Service"> <endpoint address="json" binding="webHttpBinding" contract="Host.IService" behaviorConfiguration="json"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="http://localhost/Mush/Host/Service/"/> </baseAddresses> </host> </service> </services> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <!-- To browse web app root directory during debugging, set the value below to true. Set to false before deployment to avoid disclosing web app folder information. --> <directoryBrowse enabled="true"/> </system.webServer> </configuration>
出现了如下问题:
1、无法通过配置文件中设置的baseaddress【http://localhost/Mush/Host/Service/】访问。IIS返回404错误。
2、直接通过http://localhost/Service.svc可以正常显示接口的说明信息,但是通过http://localhost/Service.svc/json/getData页面一片空白,什么内容也没有。
求高手解答
下面的连接是示例代码
http://pan.baidu.com/s/1nt1JakD
密码:3fni
麻烦各位高手帮助看看
额,你配置IIS了吗
从浏览器中访问可以看到如下界面:
不知道还需要哪些配置,求指点
@牛!: 你这个是WCF能正常启动的标志,这样应该没问题啦
@代码小兵的成长: 但是通过http://localhost/Service.svc/json/getMsg访问无任何报错及输出。页面一片空白,如下图:
@牛!: 你先告诉我你有没有自己写过一个WCF程序,如果没写过,只是看人家的会有很多问题的,我建议你看一个基础视频,一个小时就能搞定,然后你这些问题至少会自己找到位置了
控制台启动WCF服务后,通过浏览器访问正常,如下界面:
@代码小兵的成长: 写过的,现在系统中的数据服务都是通过WCF实现的,net.tcp方式访问,是自己写了一个应用程序来启动,工作正常。
现在想换到IIS中去。
@牛!: 哈哈,我反正好久不碰了,解决不了亲
是不是你服务放的地址不对?/Mush/Host/Service/ 是放在这个下面的吗?如果是,加上你IIS里设置的端口试试。
看你的绑定 webHttpBinding,应该是基于 rest 风格的 wcf 服务,你找这方面资料学习下,主要问题是你没注册 wcf 路由。
有相关资料链接地址吗?谢谢
仅供参考
http://www.cnblogs.com/artech/archive/2012/02/05/wcf-rest-webhttpbinding.html
svc 文件配置不对,
<%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.Service" CodeBehind="Service.svc.cs" %>
应该是:
<%@ ServiceHost Language="C#" Debug="true" Service="Host.Service" CodeBehind="Service.svc.cs" %>