首页 新闻 赞助 找找看

WCF发布到IIS问题

0
悬赏园豆:50 [待解决问题]

问题描述:

      网上找了一个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>
View Code

出现了如下问题:

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

麻烦各位高手帮助看看

牛!的主页 牛! | 初学一级 | 园豆:21
提问于:2015-03-11 10:20
< >
分享
所有回答(5)
0

额,你配置IIS了吗

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-11 10:27

从浏览器中访问可以看到如下界面:

不知道还需要哪些配置,求指点

支持(0) 反对(0) 牛! | 园豆:21 (初学一级) | 2015-03-11 10:29

@牛!: 你这个是WCF能正常启动的标志,这样应该没问题啦

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-11 10:31

@代码小兵的成长: 但是通过http://localhost/Service.svc/json/getMsg访问无任何报错及输出。页面一片空白,如下图:

支持(0) 反对(0) 牛! | 园豆:21 (初学一级) | 2015-03-11 10:41

@牛!: 你先告诉我你有没有自己写过一个WCF程序,如果没写过,只是看人家的会有很多问题的,我建议你看一个基础视频,一个小时就能搞定,然后你这些问题至少会自己找到位置了

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-11 10:43

控制台启动WCF服务后,通过浏览器访问正常,如下界面:

支持(0) 反对(0) 牛! | 园豆:21 (初学一级) | 2015-03-11 10:43

@代码小兵的成长: 写过的,现在系统中的数据服务都是通过WCF实现的,net.tcp方式访问,是自己写了一个应用程序来启动,工作正常。

现在想换到IIS中去。

支持(0) 反对(0) 牛! | 园豆:21 (初学一级) | 2015-03-11 10:46

@牛!: 哈哈,我反正好久不碰了,解决不了亲

支持(0) 反对(0) 代码小兵的成长 | 园豆:303 (菜鸟二级) | 2015-03-11 11:22
0

是不是你服务放的地址不对?/Mush/Host/Service/ 是放在这个下面的吗?如果是,加上你IIS里设置的端口试试。

大楚打码人 | 园豆:4313 (老鸟四级) | 2015-03-11 10:28
0

看你的绑定 webHttpBinding,应该是基于 rest 风格的 wcf 服务,你找这方面资料学习下,主要问题是你没注册 wcf 路由。

Launcher | 园豆:45045 (高人七级) | 2015-03-11 11:05

有相关资料链接地址吗?谢谢

支持(0) 反对(0) 牛! | 园豆:21 (初学一级) | 2015-03-11 11:06
0

仅供参考

http://www.cnblogs.com/artech/archive/2012/02/05/wcf-rest-webhttpbinding.html

Chaoa | 园豆:643 (小虾三级) | 2015-03-11 11:15
0

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" %>

HansonYao | 园豆:204 (菜鸟二级) | 2015-03-11 19:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册