none
Help!!关于dll使用session的问题 RRS feed

  • 问题

  • 这是原3个CS文件中的一句代码, string newfileName = "portraits/" + Guid.NewGuid().ToString("N") + ".png";我想将其中的 Guid.NewGuid().ToString("N") 改成Session["name"].ToString()作为外部传递值进来的接口,然后再编译成dll使用,但在编译时总是提示“session不存在”的错误,该怎么解决??谢谢!!!
    2011年2月24日 8:52

答案

  • 1、封装成单独的类

    public class TestClass

    {

        public void Test(HttpContext context)

       {

        ......

       //HttpContext context = HttpContext.Current; //注释掉这一段,该变量已为方法参数
                    Cutter cut = new Cutter(
                        double.Parse(context.Request["zoom"]),
                        -int.Parse(context.Request["x"]),
                        -int.Parse(context.Request["y"]),
                        int.Parse(context.Request["width"]),
                        int.Parse(context.Request["height"]),
                        oldBitmap.Width,
                        oldBitmap.Height);

        .......

        }

    }

    2、在*.aspx.cs中

    TestClass testClass = new TestClass();

    testClass(HttpContext.Current);

    • 已标记为答案 吉利儿 2011年3月1日 22:20
    2011年2月28日 10:01
    版主

全部回复

  • 要使用 HttpContext.Current.Session。 并注意,如果用了 HttpContext 的话,其他人只能在基于 Web 的项目上使用您的 DLL,Windows Forms 和 WPF 就不被支持了。
    Mark Zhou
    2011年2月24日 10:35
  • 貌似dll无法接受外面传递进来的session的值,那怎么做才能在此处留下一个接受外面传递值进来的接口呢???
    2011年2月25日 1:06
  • 您好,应该是可以的,它是一个HttpSessionState类,还 需要引用System.Web.dll。如果不行,把您的那段封装的关键代码贴出来。大家一起来分析。
    2011年2月27日 7:34
    版主

  •                 FileInfo fi = new FileInfo(src);
                    string ext = fi.Extension;

                    string newfileName = "portraits/" + Guid.NewGuid().ToString("N") + ".png";

                    //Image.GetThumbnailImageAbort abort = null;
                    Bitmap oldBitmap = new Bitmap(src);
                  
                    HttpContext context = HttpContext.Current;
                    Cutter cut = new Cutter(
                        double.Parse(context.Request["zoom"]),
                        -int.Parse(context.Request["x"]),
                        -int.Parse(context.Request["y"]),
                        int.Parse(context.Request["width"]),
                        int.Parse(context.Request["height"]),
                        oldBitmap.Width,
                        oldBitmap.Height);

                    Bitmap bmp = Helper.GenerateBitmap(oldBitmap, cut);
                    oldBitmap.Dispose();
                   
                    string temp = Path.Combine(context.Server.MapPath("~/"), newfileName);
                    bmp.Save(temp, ImageFormat.Png);
                    bmp.Dispose();
                    return "{msg:'success',src:'" + newfileName + "'}";

    2011年2月27日 23:00
  • 1、封装成单独的类

    public class TestClass

    {

        public void Test(HttpContext context)

       {

        ......

       //HttpContext context = HttpContext.Current; //注释掉这一段,该变量已为方法参数
                    Cutter cut = new Cutter(
                        double.Parse(context.Request["zoom"]),
                        -int.Parse(context.Request["x"]),
                        -int.Parse(context.Request["y"]),
                        int.Parse(context.Request["width"]),
                        int.Parse(context.Request["height"]),
                        oldBitmap.Width,
                        oldBitmap.Height);

        .......

        }

    }

    2、在*.aspx.cs中

    TestClass testClass = new TestClass();

    testClass(HttpContext.Current);

    • 已标记为答案 吉利儿 2011年3月1日 22:20
    2011年2月28日 10:01
    版主