2010-11-02 69 views
1

我尝试将C#Web应用程序的一部分转换为C#库。在C#库中转换C#Web应用程序 - 响应对象的问题

我使用了一个Response对象,但是这个在C#库中不再被识别。

这里是一些代码:

// Create a CAPTCHA image using the text stored. 
CaptchaImage ci = new CaptchaImage(textCaptcha, 200, 50, "Century Schoolbook"); 

// Change the response headers to output a JPEG image. 
this.Response.Clear(); 
this.Response.ContentType = "image/jpeg"; 

// Write the image to the response stream in JPEG format. 
ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg); 

// Dispose of the CAPTCHA image object. 
ci.Dispose(); 

如何使用Response对象,或者更好的东西改变它呢? Thx

+0

我不能真的相信你真的要问这个。你的意思是你正试图把它的一部分转移到C#_library_项目中吗? – x0n 2010-11-02 14:46:25

+0

你为什么要在“常规”C#应用程序中使用验证码? – Andy 2010-11-02 14:51:56

+0

是的!一个C#库,对不起!发布修改!我将在其他项目引用中使用该dll文件以包含Captcha。 – 2010-11-02 14:52:41

回答

1

您可以将网页代码放在C#库中,但它只适用于某些情况。您可以使用HttpContext.Current .Response(以便它是静态的,并且不引用页面上的Response实例),并调用诸如“Clear”之类的方法,但这对于引用的非Web应用程序没有任何意义图书馆。如果你正在创建一个图书馆网络应用程序,这可能是好的。

您可以尝试这样的事:

HttpContext currentContext = HttpContext.Current; 

// Create a CAPTCHA image using the text stored. 
CaptchaImage ci = new CaptchaImage(textCaptcha, 200, 50, "Century Schoolbook"); 

// Change the response headers to output a JPEG image. 
currentContext.Response.Clear(); 
currentContext.Response.ContentType = "image/jpeg"; 

// Write the image to the response stream in JPEG format. 
ci.Image.Save(currentContext.Response.OutputStream, ImageFormat.Jpeg); 

// Dispose of the CAPTCHA image object. 
ci.Dispose(); 
+0

现在正常工作!谢谢 – 2010-11-02 15:08:24

1

您需要为图像使用其他输出流/存储。例如。您可以将其存储在文件或数据库中。

0

您应该使用HttpWebRequestHttpWebResponse对象在C#winforms应用程序(假设)中执行这些功能。

+1

-1:在桌面应用程序中使用Web响应/请求类毫无意义。 – x0n 2010-11-02 14:48:46

+0

@ x0n-实际上取决于应用程序的需求。他的问题并不完全清楚他想要做什么,更不用说他实际需要什么。所以我提供了关于如何在代码背后使用Web请求的文档。 – 2010-11-02 14:53:16

2

响应对象表示您要发送给客户端的流。在桌面应用程序中,没有这样的概念,因为你的程序是客户端,所以没有流发送客户端。在你上面的例子中,你正在写一个captchaImage到这个图像将显示在客户端浏览器的流中。如果这是您唯一的意图,您可以使用picturebox控件来显示图像。如果您只需要保存图像,则可以按照将其写入响应流的方式将图像写入文件流。

+2

+1表示明显。就我个人而言,我认为OP意味着询问有关将其应用程序的某些部分转换为库,而不是应用程序。 – x0n 2010-11-02 14:49:26

+0

我不知道他在问什么。除了我曾与从未写过桌面应用程序的人一起工作并向我提过类似的问题。 – rerun 2010-11-02 15:08:10