在我的类库中有个方法
public string GetStr(string str)
{
    return System.Web.HttpContext.Current.Server.UrlDecode(str);
}该类库编译通过
在web程序中,引用该dll,调用上面的方法,完全正确,
但在winform中引用该dll,调用上面的方法 ,编译通过,但运行时“未将对象引用设置到对象的实例。”我又在winform中引用了System.Web,还是报错,谁救救??

解决方案 »

  1.   

    public string GetStr(string str)
    中,str的值我应经传了啊
      

  2.   

    这是引用当前的Http请求的啊,winform跟他有什么关系.
    参见MSDN:http://msdn.microsoft.com/zh-cn/library/system.web.httpcontext(v=VS.80).aspx
      

  3.   

    同意microtry的说法,或许你应该换另一种方法来实现你想要的效果
      

  4.   

    你不用这个,引用System.Web
    调用System.Web.HttpUtility.UrlDecode(str, Encoding.Default);这样也可转码的
      

  5.   

    “未将对象引用设置到对象的实例。”是因为你System.Web.HttpContext.Current 为空,当你调用Server属性时候当然报错。
    我上面的方法可行!记得后面要编码哦,不同编码结果不一样的~~
    [align=center]***********************************************************                    欢迎使用 CSDN 小秘书
                  http://blog.csdn.net/whowhen21***********************************************************[/align]
      

  6.   

    在 winform 程序中使用 system.web 的东西, 
    最好清楚哪些可用哪些不可用.
      

  7.   

    IIS 收到一个 web 请求,
    根据内部规则判断,
    如果需要传递给 asp.net 处理,(加载 asp.net 等操作)判断该由那个类来处理本次请求(选择一个具体的 IHttpHandler, aspx, asmx, etc.)创建一个 HttpConext 来表示本次请求的相关信息(Request, Response),
    这样, 在你的响应处理内(页面或者是 web service), 就可以访问那个 Context.Current 了.
    想想看, 你的 winform 程序跟这个过程有那些区别呢?
      

  8.   

    HttpContext是Asp.Net的IHttpHandler初始化的,而IHttpHandler由工厂创建的
    就不可能在缺省状态下用HttpContext,要在Form里面使用,可以自己写个类似功能的类,
      

  9.   

    如果楼主仅仅需要编码,7楼的方案是可行的
    细节参见MSDN:
    http://msdn.microsoft.com/zh-cn/library/system.web.httputility_members.aspx