<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      為單元測試等非WebBase的項目偽造一個HttpContext , Session 和HttpHeader

      在做單元測試的時候HttpContext.Current是為null的

      而有些dll是和HttpContext綁定的(很大原因是...net大部分用于web項目)

      或者是試圖在windows form 或者console中使用這些dll就掛了...

      當然HttpContext.Current是可以賦值的...那么最最簡單的方法就是直接new一個HttpContext給它啦

      HttpRequest request = new HttpRequest("", "http://localhost", "");
      HttpContext.Current
      = new HttpContext(request, new HttpResponse(new System.IO.StringWriter()));

      好吧 如果需要Session的話還需要添加下面的代碼

      System.Web.SessionState.SessionStateUtility.AddHttpSessionStateToContext(
      HttpContext.Current,
      new HttpSessionStateContainer
      (
      "",
      new SessionStateItemCollection(),
      new HttpStaticObjectsCollection(),
      20000,
      true,
      HttpCookieMode.UseCookies,
      SessionStateMode.Off,
      false
      )
      );

      問題又出現了......有的代碼會讀取HttpHeader...例如ip什么的經常就存儲在這里

      更郁悶的是HttpContext的類經常是不能設置HttpHeader的.....

      因為這個是只讀的.......

      其實只讀這東西在.net中基本是騙人的.也就編譯時有點用

      到運行時 別說只讀了 連private 都可以通過反射弄出來

      那么就用反射賦值給httpheader吧

      var instance = HttpContext.Current.Request.ServerVariables;
      Type type
      = instance.GetType();
      BindingFlags temp
      = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;

      MethodInfo addStatic
      = null;
      MethodInfo makeReadOnly
      = null;
      MethodInfo makeReadWrite
      = null;


      MethodInfo[] methods
      = type.GetMethods(temp);
      foreach (MethodInfo method in methods)
      {
      switch (method.Name)
      {
      case "MakeReadWrite": makeReadWrite = method;
      break;
      case "MakeReadOnly": makeReadOnly = method;
      break;
      case "AddStatic": addStatic = method;
      break;
      }
      }

      makeReadWrite.Invoke(instance,
      null);
      List
      <string[]> list = new List<string[]>();
      string ip = ServiceContext.IPAddress;
      list.Add(
      new string[] { "HTTP_X_FORWARDED_FOR", ip });
      list.Add(
      new string[] { "HTTP_CLIENT_IP", ip });
      list.Add(
      new string[] { "HTTP_X_FORWARDED", ip });
      list.Add(
      new string[] { "HTTP_X_CLUSTER_CLIENT_IP", ip });
      list.Add(
      new string[] { "HTTP_FORWARDED_FOR", ip });
      list.Add(
      new string[] { "HTTP_FORWARDED", ip });
      list.Add(
      new string[] { "REMOTE_ADDR", ip });
      foreach (string[] values in list)
      addStatic.Invoke(instance, values);
      makeReadOnly.Invoke(instance,
      null);

      posted on 2011-03-31 18:15  聽說讀寫  閱讀(1913)  評論(1)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲一区无码精品色| 亚洲avav天堂av在线网爱情| 久久精品波多野结衣| 日韩一区二区三区日韩精品| 亚洲欧美日韩国产精品专区| 成年午夜免费韩国做受视频| 久久不见久久见www日本| 日韩人妻精品中文字幕专区 | 日韩精品中文字幕一线不卡| 亚洲成人av在线系列| 亚洲人成网网址在线看| 国产果冻豆传媒麻婆精东| 亚洲国产成人av国产自| 成人午夜福利视频一区二区| 老熟妇性老熟妇性色| 99久久免费精品国产色| 中文字幕精品人妻丝袜| 久久精品国产www456c0m| 久久精品中文字幕少妇| 青草国产超碰人人添人人碱| 国产在线一区二区不卡| 中文国产日韩欧美二视频| 亚洲av成人区国产精品| 亚洲精品国产免费av| 国产精品区免费视频| 中文字幕 制服 亚洲 另类| 国产精品中文字幕二区| 亚洲av成人无码天堂| 中文字幕人妻丝袜美腿乱| 国产精品自在拍首页视频8| 精品日韩人妻中文字幕| 日韩中文字幕在线不卡一区| 亚洲色成人网站www永久| 精品国产乱码久久久久久影片| 国语做受对白XXXXX在线| 翘臀少妇被扒开屁股日出水爆乳 | 国产又色又爽又高潮免费| 亚洲av不卡电影在线网址最新| 亚洲日本高清一区二区三区| 97精品尹人久久大香线蕉| 日韩国产中文字幕精品|