wcf-WCF 中为什么OperationContext.Current为空?

问题描述

WCF 中为什么OperationContext.Current为空?
照着教程写了个例子但是调试的时候OperationContext.Current为空报错请问是什么原因呢?代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.ServiceModel;using System.IdentityModel;using System.Runtime.Serialization;using System.Data;namespace WCFStudy{    [ServiceContract]    public interface IEchoClaims    {        [OperationContract]        List<string> Echo();    }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.ServiceModel;using System.IdentityModel;using System.IdentityModel.Claims;using System.Runtime.Serialization;using System.Data;namespace WCFStudy{    public class EchoClaims : IEchoClaims    {        public List<string> Echo()        {            List<string> claims = new List<string>();             '// 此处为报错结点OperationContext.Current为空!!!!!'             foreach (ClaimSet set in OperationContext.Current.ServiceSecurityContext.AuthorizationContext.ClaimSets)            {                foreach (Claim claim in set)                {                    claims.Add(string.Format(""{0} - {1} - {2}"" claim.ClaimType claim.Resource.ToString() claim.Right));                }            }            return claims;        }    }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.ServiceModel;using System.IdentityModel;using System.Runtime.Serialization;using System.Data;namespace WCFStudy{    class Program    {        static void Main(string[] args)        {            ServiceHost host = new ServiceHost(typeof(EchoClaims) new Uri(""http://localhost:8733""));            try            {                host.Open();                Console.WriteLine(""Service running..."");                Console.WriteLine(""Press a key to quit"");                Console.ReadKey();            }            finally            {                host.Close();            }        }    }}
<?xml version=""1.0"" encoding=""utf-8"" ?><configuration>    <startup>         <supportedRuntime version=""v4.0"" sku="".NETFrameworkVersion=v4.5"" />    </startup>  <system.serviceModel>    <services>      <service name=""WCFStudy.EchoClaims""                behaviorConfiguration=""echoClaimsBehavior"">        <endpoint address=""EchoClaims""                   contract=""WCFStudy.IEchoClaims""                   binding=""wsHttpBinding""                   bindingConfiguration=""echoClaimsBinding"" />      </service>    </services>    <bindings>      <wsHttpBinding>        <binding name=""echoClaimsBinding"">          <security mode=""Message"">            <message clientCredentialType=""UserName""                      negotiateServiceCredential=""true""/>          </security>        </binding>      </wsHttpBinding>    </bindings>    <behaviors>      <serviceBehaviors>        <behavior name=""echoClaimsBehavior"">          <serviceCredentials>            <serviceCertificate findValue=""CN=WCFServer""                                 storeLocation=""LocalMachine""                                 storeName=""My""                                 x509FindType=""FindBySubjectDistinguishedName""/>            <userNameAuthentication userNamePasswordValidationMode=""Windows""></userNameAuthentication>          </serviceCredentials>          <serviceMetadata httpGetEnabled=""true""/>        </behavior>      </serviceBehaviors>          </behaviors>  </system.serviceModel></configuration>
时间: 2024-10-30 14:14:48

wcf-WCF 中为什么OperationContext.Current为空?的相关文章

WCF回调中的死锁

一.服务器端死锁 对于如下服务: [ServiceContract(CallbackContract = typeof(INotify))] public class DownloadService { [OperationContract] public void Download() { //开始下载操作 //..... //通知下载完成 var callback = OperationContext.Current.GetCallbackChannel<INotify>(); callb

[WCF]配置文件中Certificate 的encodeValue怎么设置?

在WCF配置文件中经常会出现这样的属性:   <identity> <certificate encodedValue="large string!!!!!!!" /> </identity>     那么这其中的encodedValue如何设置?   1.把cer文件(证书)导出为base64格式 a,使用mmc找到需要的证书  -- (Add Snap-In) b,右击证书  导出    c,base64 encoded x509(.cer) 2

WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而由于WCF服务的特殊性,调试起来也不是那么方便,因此往往会花费不少时间来进行跟踪处理.本文介绍我在我在我的框架里面使用WCF服务的时候,出现的一个常见错误的处理方法,它的提示信息是:基础连接已经关闭: 连接被意外关闭.这种情况我碰到的有两种,一种是返回DataTable的时候出现的,一种是返回实体类

PHP中key和current,next的联合运用实例分析_php技巧

本文实例讲述了PHP中key和current,next的联合运用方法.分享给大家供大家参考,具体如下: 问题: $arrq = array(); $arrq['tuc'] = array('sss'=>'ewq','shu'=>'sjkah','saa'=>'dwjhaz'); $arrq['tucs'] = array('ssss'=>'ewsq','sQhu'=>dwjhaz','sa12a'=>'dwjQhaz'); $arrq['tuca'] = array('

js中判断对象是否为空的三种实现方法

 本篇文章主要是对js中判断对象是否为空的三种实现方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在写js脚本的时候经常遇到对象为空或者不是对象的情况,出现这种情况我们可以用if去判断它,然后去执行相应的处理方法,具体判断他们的方法有以下几种:   1.if   (typeOf(x)   ==   "undefined")   2.if   (typeOf(x)   !=   "object")   3.if(!x)   其中第三种是最简单的

摄像头-android 从socket中读取数据转换bitmap为空

问题描述 android 从socket中读取数据转换bitmap为空 用蓝牙传的,这是客户端用摄像头预览的数据 这是传数据的方法 这是服务端接收数据 日志上显示 D/skia: --- SkImageDecoder::Factory returned null 打印接收到的数据byte[] b时显示一排竖方框,这应该是乱码或者是空吧,是编码格式的问题? 解决方案 http://www.cnblogs.com/devinzhang/archive/2012/06/05/2536848.html

oracle分组查询中 查出的值为空的,用nvl()函数,把为空的填为0 为什么不起作用??

问题描述 oracle分组查询中 查出的值为空的,用nvl()函数,把为空的填为0 为什么不起作用?? 解决方案 不知道具体的情况 不过count(0) 不是null 如果没有值默认也是0 如例 select count(0) from dual where 1=2

ddms-android手机已经root,为什么DDMS中查看data目录还是空的?

问题描述 android手机已经root,为什么DDMS中查看data目录还是空的? 最近在学android,自己写了一个很简单的小程序,测试SharedPreferences的读取和写入 ,程序运行是成功的.但是打开DDMS查看data目录是空的,手机已Root 解决方案 SharedPreferences在data/data/名称 下

判断一个脚本中的变量是否为空(转)

判断一个脚本中的变量是否为空,我写了一个这样的shell脚本: #!/bin/sh#filename: test.shpara1=if [ ! -n $para1 ]; then  echo "IS NULL"else  echo "NOT NULL"fi 然后把该脚本:test.sh通过chmod +x 改为可以执行的脚本,执行后输出的结果为: NOT NULL,很是奇怪,最后,通过查询一些资料发现,可以通过如下方式判断一个shell变量是否为空:1. 变量通过&