问题列表 - 第14827页

C#会话未从HTTPHandler保存

我有一个HTTPHandler,只要请求captcha.ashx页面,就会向用户生成一个Captcha图像.它的代码很简单:

        CaptchaHandler handler = new CaptchaHandler();
        Random random = new Random();
        string[] fonts = new string[4] { "Arial", "Verdana", "Georgia", "Century Schoolbook" };
        string code = Guid.NewGuid().ToString().Substring(0, 5);
        context.Session.Add("Captcha", code);

        Bitmap imageFile = handler.GenerateImage(code, 100, 70, fonts[random.Next(0,4)]);
        MemoryStream ms = new MemoryStream();
        imageFile.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

        byte[] buffer = ms.ToArray();

        context.Response.ClearContent();
        context.Response.ContentType = "image/png";
        context.Response.BinaryWrite(buffer);
        context.Response.Flush();
Run Code Online (Sandbox Code Playgroud)

然后在我的常规网站上,我得到以下内容:

...
<img id="securityCode" src="captcha.ashx" alt="" /><br />
<a href="javascript:void(0);" onclick="javascript:refreshCode();">Refresh</a>
...
Run Code Online (Sandbox Code Playgroud)

这非常有效,只要请求captcha.ashx页面,就会生成图像并将其发送回用户.我的问题是HTTPHandler没有保存会话?我试图从正常页面恢复会话,但我只有一个例外,说它不存在,所以我打开Trace看看哪些会话是活动的,它没有列出HTTPHandler创建的会话(验证码).

HTTPHandler使用IReadOnlySessionState与会话进行交互.HTTPHandler是否只具有读访问权限,因此不存储会话?

c# session captcha httphandler

2
推荐指数
1
解决办法
2364
查看次数

为什么我不能将从ObservableCollection <Proddata>派生的对象设置为等于作为ObservableCollection <Proddata>返回的对象?

我得到一个编译错误,"无法隐式转换类型'System.Collections.ObjectModel.ObservableCollection到ProddataRecsObservable'.存在显式转换"请参阅以下代码段中的注释.

//I created a custom class called ProddataRecsObservable derived from
//ObservableCollection<Proddata> so I can do some special CRUD operations for my production
//data records.

public class ProddataRecsObservable : ObservableCollection<Proddata>
{

}        

//I have another class which maps an object to a reader and the function MappAll returns an 
//Observable collection of type <T>.

public abstract class MapperBase<T>
{
    protected abstract T Map(IDataRecord record);

    public ObservableCollection<T> Mapall(IDataReader reader)
    {
        ObservableCollection<T> collection = new ObservableCollection<T>();

        while (reader.Read())
        {
            try
            {
                collection.Add(Map(reader));
            } …
Run Code Online (Sandbox Code Playgroud)

c# casting crud observablecollection

0
推荐指数
1
解决办法
984
查看次数

IIS WCF服务托管与Windows服务

我们开发了WCF服务,我们正在寻求部署它.我们的客户将使用它,basicHttpBinding但我们的内部团队将使用它namedPipesBinding.

我们想知道在IIS 7或Windows服务中托管它是否更好.我们运行了一些测试,我们发现当我们在IIS中添加绑定时,它不会更新我们服务的配置文件.这意味着我们需要在两个不同的地方维护配置.这不符合逻辑,对吗?

我们还在StackOverflow上读到当WCF服务是IIS中的主机时忽略基址(请参阅有关<baseAddresses>的WCF服务配置文件问题)

.net c# iis wcf was

45
推荐指数
6
解决办法
4万
查看次数

仅显示纯色

我正在尝试使用CAGradientLayers显示渐变.
我只是设置了两种颜色,我希望在它们之间看到一个渐变,不幸的是只显示第一个普通颜色而没有任何渐变.

这是我的代码:

- (void)viewDidLoad {
[super viewDidLoad];

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0.0, 0.0, 480.0, 320.0);
gradientLayer.colors = [NSArray arrayWithObjects:
                        (id)[UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0].CGColor,
                        (id)[UIColor colorWithRed:0.85 green:0.85 blue:0.85 alpha:1.0].CGColor,
                        nil];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(480, 320);

[self.view.layer addSublayer:gradientLayer];
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

iphone gradient

2
推荐指数
1
解决办法
2170
查看次数

5
推荐指数
1
解决办法
6625
查看次数

为什么必须在Java中初始化局部变量(包括基元)?

为什么必须在Java中初始化局部变量(包括基元)?为什么在实例变量的情况下不相同?

java variables primitive-types

53
推荐指数
4
解决办法
3万
查看次数

在调试模式下运行Visual Studio控制台应用程序的CPU使用率不会超过50%

我有几个C#控制台应用程序,基本上解析内存中的大量数据(LINQ)并将结果输出到文本文件.

现在,忘记写入文本文件一分钟,因为这不是问题发生的地方.

当我在调试模式下运行应用程序时,我永远不会使用超过50%的CPU使用率.它将解析/按摩数十万条记录,但只能快速运行X并利用50%的CPU(在任务管理器中查看).

我真的想用100%的CPU来加快处理速度.

有人有任何见解吗?

我正在运行带有Service Pack 3的Windows XP Professional.我安装了带Service Pack 1的Visual Studio 2008 Professional.

谢谢!

编辑:

  • 我已手动将任务管理器中进程的关联设置为双CPU上的单个核心.
  • 有时我可以利用51%或52%的CPU来捕获它.

c# vb.net debugging visual-studio-2008 visual-studio

2
推荐指数
2
解决办法
2048
查看次数

我可以在Eclipse运行配置中运行脚本吗?

我的公司传统上使用Linux命令行开发环境.我们使用脚本来管理PATHLD_LIBRARY_PATH编译和运行时的环境变量.通过将此脚本添加到命令的开头来调用此脚本,如下所示:

sbs make
sbs ../bin/foo.exe
Run Code Online (Sandbox Code Playgroud)

我试图让我们的代码从Eclipse CDT运行,并在开发工具中向前迈进十年左右.我可以在构建配置中控制make命令的内容,但我还没想出如何在运行配置中控制可执行命令.这样的事情可能吗?或者我们是否必须在运行配置中设置环境变量,而不是依赖脚本来执行此操作.该脚本的目的是在为不同版本的GTK构建或在不同平台(Linux,Solaris等等)上构建时最小化工作.

linux scripting eclipse-cdt run-configuration

8
推荐指数
1
解决办法
1万
查看次数

是否可以安全地从VB .NET获取SecureString值?

我一直觉得SecureString有点奇怪,但我认为我的大多数问题是由于我不明白的安全问题.今天我决定坐下来自学一下,但我已经看到了一个似乎是致命的障碍.

我设想的场景是"用户在文本框中输入密码,密码被哈希并与存储的哈希进行比较".起初我担心文本框包含字符串,但后来我意识到你可以滚动一个使用SecureString作为其存储的自定义文本框.凉.这是"密码被哈希并进行比较......"这一部分给了我麻烦.

我对VB .NET中的问题的第一次破解是天真和错误的:

Dim passwordHandle As IntPtr
Dim insecurePassword As String = Nothing
Try
    passwordHandle = Marshal.SecureStringToBSTR(_password)
    insecurePassword = Marshal.PtrToStringBSTR(passwordHandle)
Catch ex As Exception

Finally
    If passwordHandle <> IntPtr.Zero Then
        Marshal.ZeroFreeBSTR(passwordHandle)
    End If
End Try

If insecurePassword <> Nothing Then
    ' Do hash and comparison
End If
Run Code Online (Sandbox Code Playgroud)

这只是将密码填入常规字符串中,并且首先违背了使用SecureString的目的.所以我一直在搜索并找到一篇博文,在C#中很好地解决了这个问题:将字符串制作成BSTR,复制到固定字符串中,然后BSTR和固定字符串在使用后都归零.这似乎是一个更好的主意,因为它最大限度地减少了不安全字符串在内存中的时间.但是,它似乎没有办法在VB .NET中实现这一点.C#正在使用其不安全的代码功能来执行指针操作,但VB .NET无法执行此操作.我看了一下Marhsall.Copy(),但它看起来像是面向数组.我想过尝试将对象的IntPtr变量和BSTR转换为字符串,但这仍然让我使用像String.Replace()这样的方法,它将创建一个新的字符串.

根本不可能从VB .NET做到这一点,还是有什么我想念的?

编辑 我接受AMissico的回答只有轻微的保留.Marshal.ReadByte()方法将从非托管内存中复制一个字节,并在非托管内存中创建一个字节.这使得攻击者很难找到密码的各个字符.我认为这远远低于找到整个字符串的几率,但我引用的(显然已经不存在的)文章中的C#能够使用不安全的代码来避免这种情况.思考过程是使用GCHandle将字符串固定在内存中,然后使用不安全的代码来绕过.NET字符串的不变性.聪明的技巧在VB .NET中似乎是不可能的.我会尝试使用C#代码本身.

vb.net securestring

5
推荐指数
1
解决办法
5744
查看次数

我可以避免C#中的异常,继续执行代码吗?

我有以下C#代码.每当发现异常时(例如在第1行),我就永远无法到达其他行(2,3,4等).

try
{
    line1
    line2
    ...
}
catch (Exception ex)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

在C#中,是否可以说如果第1行产生异常,只需继续其他行(2,3,4等)?

c# exception-handling visual-studio-2008 visual-studio c#-3.0

7
推荐指数
3
解决办法
6126
查看次数