WCF 设置不正确引起的问题及核查过程

问题

近日,在Vs2013环境下做了个WCF测试。在建立好WCF工程并编译正确后,在同一解决方案中的测试工程加载wcf服务引用,出现以下问题


点击“详细信息”链接,出现错误为“请求失败,HTTP 状态为 404:  Not Found。”详细如下图所示


追查

1,首先先确认WCF 工程是否可运行访问,通过vs2013 运行WCF工程,访问相关的svc页面,结果出现错误为“System.InvalidOperationException: 协定“IService1”本身不一致。它包含一个或多个 IsTerminating 或者非 IsInitiating 操作,但是它未将 SessionMode 属性设置为 SessionMode.Required。IsInitiating 和 IsTerminating 特性只能在会话的上下文中使用。


2,检查相关的WCF 接口文件,

     [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string GetData(int value);

        [OperationContract(
            IsInitiating = true,
            IsTerminating = false
        )]
        int MethodOne();

        [OperationContract(
            IsInitiating = false,
            IsTerminating = false
        )]
        int MethodTwo(int x, int y);

        [OperationContract(
           IsInitiating = true,
           IsTerminating = true
       )]
        int MethodThree();

        // TODO: 在此添加您的服务操作
    }

接口文件中设置了IsInitiating , IsTerminating  等多个OperationContract属性信息,并且设置了 [ServiceContract]属性。

3,搜查相关解决方案,发现当设置sInitiating , IsTerminating 属性时需要修改[ServiceContract]属性 为

[ServiceContract(SessionMode = SessionMode.Required)]

4,修改完成后,再次运行WCF工程,访问相关的svc页面,结果出现错误为“System.InvalidOperationException: 协定需要会话,但是绑定“BasicHttpBinding”不支持它或者因配置不正确而无法支持它。


5,仔细核查,发现与WCF工程的配置文件web.config有关,相关配置信息如下:

    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>

6,修改配置信息如下

    <protocolMapping>
      <add binding="wsHttpBinding" scheme="http" />
    </protocolMapping>
7, 修改完成后,再次运行WCF工程,访问相关的svc页面,结果正常,出现以下结果



8,此时,停止运行wcf工程。重新在同一解决方案中的测试工程加载wcf服务引用,结果正常



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mystonelxj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值