2010-06-21 109 views
0

我有问题contextInfoIHttpModule的初始化没有被解雇

[WebMethod] 
[SoapHeader("UserInfo", Direction = SoapHeaderDirection.In)] 
public void TestContext() 
     { 
      var user = ContextInfo.Current.User.LoginName; 
     } 

UserInfo _userInfo; 
     [System.Xml.Serialization.SoapElement(IsNullable = true)] 
     public UserInfo UserInfo 
     { 
      get { return _userInfo; } 
      set { _userInfo = value; } 
     } 

当我跑我在当地的一切ASMX去罚款,将其输入到

public void Init(HttpApplication httpApp). 

但是当我在服务运行我的web它不,我得到错误在

ContextInfo.Current.User.LoginName; 

因为目前为空。

我通过远程调试器检查了这一点。

我有Windows Server 2008和我在像我的服务器域。

public class AuthenticateRequestHttpModule : IHttpModule 
    { 

     private HttpApplication mHttpApp; 

     public void Init(HttpApplication httpApp) 
     { 
      this.mHttpApp = httpApp; 

      mHttpApp.AuthenticateRequest += new EventHandler(OnAuthentication); 
     } 
... 
} 

ContextInfo:

public class ContextInfo 
{ 

    public static void Create(User user) 
    { 
     HttpContext.Current.Items.Add(ITEM_KEY, new ContextInfo(user)); 
    } 

      public static ContextInfo Current 
    { 
     get 
     { 
      return HttpContext.Current.Items[ITEM_KEY] as ContextInfo; 
     } 
    } 


     private ContextInfo(User user) 
    { 

     _user = user; 
    } 

    public User User 
    { 
     get { return _user; } 
    } 


    User _user; 
    private const string ITEM_KEY = "ContextInfo"; 
} 

任何想法?

+0

你可以分享'ContextInfo'的代码,特别是'ContextInfo.Current'。 – 2010-06-21 17:15:45

+0

@Chris Taylor我已添加 – user278618 2010-06-23 08:27:38

回答