小编Aar*_*ron的帖子

<%$,<%@,<%=,<%#...这笔交易是什么?

我已经在经典ASP和ASP.NET中编程,我在服务器端代码的标记内看到了不同的标签.

我最近在MSDN上遇到了一个很好的博客,它解决了以下问题之间的区别:

  • <%= (百分比和等号)和
  • <%# (百分号和哈希/磅/ octothorpe)

(<%#仅在数据绑定时进行评估,并<%=在渲染时进行评估),但我也看到:

  • <%$ (百分号和美元符号)和
  • <%@ (百分号和符号).

我相信<%@加载程序集之类的东西,也许<%$从配置文件加载东西?我不太确定.

我只是想知道是否有人可以为我澄清所有这些并可能解释为什么创建这么多看似有类似目的的不同标签很重要?

asp.net server-tags

206
推荐指数
2
解决办法
3万
查看次数

如何存储历史数据

我和一些同事讨论了存储历史数据的最佳方法.目前,对于某些系统,我使用单独的表来存储历史数据,并保留当前活动记录的原始表.所以,假设我有桌子FOO.在我的系统下,所有活动记录将进入FOO,所有历史记录将进入FOO_Hist.FOO中的许多不同字段可以由用户更新,因此我希望保持对更新的所有内容的准确帐户.除了自动递增的HIST_ID之外,FOO_Hist保存与FOO完全相同的字段.每次更新FOO时,我都会在FOO_Hist中执行一个插入语句,类似于:insert into FOO_HIST select * from FOO where id = @id.

我的同事说这是糟糕的设计,因为出于历史原因我不应该有一个表的精确副本,而应该只是在活动表中插入另一条记录,并带有一个标志,表明它是出于历史目的.

是否有处理历史数据存储的标准?在我看来,我不想把我的所有历史记录都放在同一个表格中,因为它可能超过一百万条记录(我在考虑长期).

你或你的公司如何处理这个问题?

我正在使用MS SQL Server 2008,但我想保持任何DBMS的通用和任意的答案.

database-design

152
推荐指数
4
解决办法
11万
查看次数

检测ASP.NET中的内存泄漏

我的开发团队现在正在使用ASP.NET 3.5/4.0,我们的站点在IIS 7.5上运行.最近,我们一直遇到问题(大约每周一次)导致我们的ASP.NET应用程序抛出内存不足异常."解决方案"是重新启动我们网站上的应用程序池.我说"解决方案"因为它不是解决方案; 它更像是一种绷带,只是让我们的应用程序池保持在合理的状态.在我看来,一些应用程序或许多应用程序正在泄漏内存,这会随着时间的推移而累积并导致内存不足异常.虽然我可以设置IIS以定期重新启动应用程序池,但我宁愿知道如何检测内存泄漏以尝试修复程序而不是继续应用band-aids.是否有任何工具可以检测和记录ASP.NET应用程序的内存泄漏?

此外,当我们切换到使用Telerik的RAD控件时,我们真的开始看到更多这个问题.有没有其他人使用这些控件有类似的问题?

谢谢,

亚伦

c# asp.net telerik iis-7.5

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

处理后访问DataContext

我正在使用ASP.NET 4.0.

我有以下代码返回错误"无法访问已处置的对象.对象名称:'Dispose之后访问的DataContext'."

 public IEnumerable<BatchHeader> GetHeaders()
            {
                using(NSFChecksDataContext context = DataContext)
                {
                    IEnumerable<BatchHeader> headers = (from h in context.BatchHeaders
                                                        select h);                
                    return headers;                            
                }
            }
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为:

public IEnumerable<BatchHeader> GetHeaders()
        {
            using(NSFChecksDataContext context = DataContext)
            {            
                return context.BatchHeaders.ToList();                            
            }
        }
Run Code Online (Sandbox Code Playgroud)

它会工作正常.我正在使用此方法填充RadGrid.任何人都可以解释为什么第二种方法可行但不是第一种方法?

谢谢.

c# linq datacontext linq-to-sql

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

将图像作为二进制数据写入文本文件C#

我需要创建一个文件,将图像作为文本嵌入到某些记录中.我把图像写成文本时遇到了一些麻烦.我正在做的是从SQL数据库(图像类型)收集图像作为字节数组然后我通过遍历每个字节并将该字节的ASCII等效于文件写入文本文件.

在我将该图像写入文本文件之前,我必须将其转换为CCITT4格式的TIFF(以前是jpeg).为了仔细检查这是否正确完成,我还将流保存为TIFF并在"AsTiffTagViewer"中查看,这表明压缩是正确的.我能够在适当的观众中观看tiff; 但是,从文件中收集文本时,我无法查看图像.

这是代码:

byte[] frontImage = (byte[])imageReader["front_image"];
MemoryStream frontMS = new MemoryStream(frontImage);
Image front = Image.FromStream(frontMS);
Bitmap frontBitmap = new Bitmap(front);
Bitmap bwFront = ConvertToBitonal(frontBitmap);
bwFront.SetResolution(200, 200);
MemoryStream newFrontMS = new MemoryStream();
bwFront.Save(newFrontMS, ici, ep);
bwFront.Save("c:\\Users\\aarong\\Desktop\\C#DepositFiles\\" + checkReader["image_id"].ToString() + "f.tiff", ici, ep);
frontImage = newFrontMS.ToArray();   
String frontBinary = toASCII(frontImage); 

private String toASCII(byte[] image)
{
    String returnValue = "";
    foreach (byte imageByte in image)
    {
        returnValue += Convert.ToChar(imageByte);
    }
    return returnValue;
}   
Run Code Online (Sandbox Code Playgroud)

正在写入文件的是frontBinary.有没有人知道什么是错的?保存的tiff是正确的,但是当写为ASCII文本时,完全相同的字节数组没有正确写入.

谢谢.

编辑 通过使用BinaryWriter(byte [])将图像正确写入文本已更正此问题.感谢大家的帮助!

c# image stream

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

PrintDocument.PrinterSettings.PrinterName \\ servername\printername不可用

我正在使用C#System.Drawing.Printing名称空间.我需要将文档发送到网络打印机; 但是,我们所有的网络打印机都这样命名:

r99p-printername.company.com

设置我的PrintDocument对象的打印机名称,根据MSDN文档,我需要使用\\ servername\printername.我的网络管理员向我保证,没有一台打印机有这个,我只能使用上述网络打印机的命名约定.当我在我的应用程序中尝试使用它时,我得到"访问打印机的设置无效".

有任何想法吗?

谢谢.

c# printing

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

根据高度/宽度C#设置图像DPI

我正在写一个应用程序将一些图像发送给第三方,图像必须是200x200 DPI.图像是位图,大小为500宽度和250高度.

我第一次用第三方测试图像时,我的分辨率不正确.我只是习惯image.SetResolution(200,200)将其正确设置为200x200.但是,这只是改变了图像的分辨率标签并且没有正确,根据我的第三方技术联系人,调整图像的高度和宽度.

是否有一个比例,我可以使用,以便每增加一个分辨率的X单位,我只增加相应的高度或宽度Y单位?我认为我可以增加分辨率而不必增加高度或宽度.

谢谢你,亚伦.

c# image

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

从Windows窗体切换到Web窗体

我在.NET 3.5中创建了一个Windows Form可执行文件,它使用dll与扫描检查的计算机进行通信.我最终将需要从可执行文件转移到可以执行相同操作的Web窗体.这将是几个月后,但我想现在开始做研究,因为我之前没有这样做过.我将需要使用ActiveX才能通过Web窗体与设备进行通信.我以前也没有这样做过.

我想保留现有可执行文件的功能而不必重写大部分功能,尽管我知道其中一些需要重写.我已经完成了关于ActiveX以及如何使用它的研究,但我想知道是否有人有类似的情况.你做了什么来将exe转换为web程序?是否存在我所忽视的优秀,具体的资源,可以为我指出这种情况的正确方向?你有什么建议可以帮助我减少错误吗?我工作的公司以前没有其他任何人这样做过,所以我必须自己教所需要做的一切.

提前致谢.

.net c# activex

6
推荐指数
1
解决办法
509
查看次数

DateTime.Now返回奇怪的日期

我有一个用C#.NET 3.5编写的WinForms应用程序.此应用程序与SQL Server 2008交互.每当我将记录添加到数据库中时,我DateAdd都会插入一个列DateTime.Now.无论出于何种原因,我有4条奇数日期的记录:

'1980-01-03 23:08:43.970'    
'1980-01-03 23:08:44.157'    
'1980-01-03 23:08:44.530'    
'1980-01-03 23:08:45.547'
Run Code Online (Sandbox Code Playgroud)

这些之前和之后的记录都有适当的日期'2011-05-29 XX:XX:XX.XXX'.用户无权修改任何应用程序中的日期字段.

是否有任何理由认为日期会像这样改变?用户无权修改系统时间,我假设是DateTime.Now收集日期的地方.

基本上,我得出的结论是,有一个错误,或者用户有一个完全配备了助焊剂电容器的Delorean ......

.net c#

6
推荐指数
1
解决办法
642
查看次数

更有效的方法为SqlCommand .NET添加参数

我刚刚阅读了一个关于如何在.NET中向SqlCommand添加参数的问题,它为我提出了一个问题.在我的所有程序中,这是我向命令添加参数的方法:

SqlCommand cmd = new SqlCommand(cmdText,conn);
cmd.Parameters.Add(new SqlParameter("@name",value));
Run Code Online (Sandbox Code Playgroud)

我知道您也可以通过以下方式添加参数:

cmd.Parameters.Add(name, dbType, size).Value = value;
Run Code Online (Sandbox Code Playgroud)

以下哪种添加参数的方法更好?有关系吗?我知道使用Sql命名空间对SQL Server查询更有效,所以我的第一个响应是使用SqlParameter会更有效.但是,由于它已经是一个SqlCommand,我对此并不十分肯定.此外,由于使用SqlParameter实例化一个新对象,是否会使其效率低于其他情况?

.net sql

4
推荐指数
1
解决办法
648
查看次数

RadGrid自定义过滤器

我正在尝试为我的RadGrid添加自定义过滤器.我有一个专栏,vendNum,我想让用户使用以逗号分隔的列表过滤多个vendNum.基本上,我想要与SQL中的"in"语句相同的功能(其中vendNum在(X,Y,Z)中).

我按照本网站上的教程,提出了以下代码放在我的RadGrid1_ItemCommand事件中.

 protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
        {
            if (e.CommandName == RadGrid.FilterCommandName)
            {
                Pair filterPair = (Pair)e.CommandArgument;

                switch (filterPair.Second.ToString())
                {               
                    case "vendNum":
                        TextBox tbPattern = (e.Item as GridFilteringItem)["vendNum"].Controls[0] as TextBox;
                        if (tbPattern.Text.Contains(","))
                        {
                            string[] values = tbPattern.Text.Split(',');
                            if (values.Length >= 2)
                            {
                                e.Canceled = true;
                                StringBuilder newFilter = new StringBuilder();
                                for (int i = 0; i < values.Length; i++)
                                {
                                    if (i == values.Length - 1)
                                        newFilter.Append("[vendNum] = " + values[i]);
                                    else
                                        newFilter.Append("[vendNum] = " + values[i] …
Run Code Online (Sandbox Code Playgroud)

asp.net telerik radgrid

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

写入文件时使用错误的编码C#

我正在创建一个二进制文件,以传输给第三方,其中包含有关每个图像的图像和信息.该文件使用记录长度格式,因此每条记录都是特定长度.每条记录的开头是记录长度指示符,长度为4个字符,表示Big Endian格式的记录长度.

我正在使用BinaryWriter写入文件,而对于记录长度指示器,我正在使用Encoding.Default.

我遇到的问题是一条记录中有一个字符显示为"?" 因为它无法识别.我为记录长度指示器构建字符串的算法是这样的:

  private string toBigEndian(int value)
    {
        string returnValue = "";            
        string binary = Convert.ToString(value, 2).PadLeft(32, '0');
        List<int> binaryBlocks = new List<int>();
        binaryBlocks.Add(Convert.ToInt32(binary.Substring(0, 8), 2));
        binaryBlocks.Add(Convert.ToInt32(binary.Substring(8, 8), 2));
        binaryBlocks.Add(Convert.ToInt32(binary.Substring(16, 8), 2));
        binaryBlocks.Add(Convert.ToInt32(binary.Substring(24, 8), 2));

        foreach (int block in binaryBlocks)
        {                
            returnValue += (char)block;
        }

        Console.WriteLine(value);

        return returnValue;
    }
Run Code Online (Sandbox Code Playgroud)

它占用记录的长度,将其转换为32位二进制,将其转换为8位二进制块,然后将每个块转换为适当的字符.此处返回的字符串确实包含正确的字符,但是当它写入文件时,一个字符无法识别.这就是我写它的方式:

//fileWriter is BinaryWriter and record is Encoding.Default
fileWriter.Write(record.GetBytes(toBigEndian(length)));
Run Code Online (Sandbox Code Playgroud)

也许我使用了错误的编码类型?我尝试过UTF-8,它应该可以工作,但它有时给我额外的字符.

在此先感谢您的帮助.

c# character-encoding

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

在C#中从FTP服务器检索文件列表

我正在尝试从FTP服务器检索文件列表,但我得到了一些奇怪的非ASCII响应.

这是我正在使用的代码:

 public string[] getFileList(string mask)
 {
   if(!logined)
   {
     login();
   }
   Socket cSocket = createDataSocket();
   this.getSslDataStream(cSocket);
   sendCommand("PASV");
   sendCommand("LIST " + "*"+mask);
   stream2.AuthenticateAsClient(remoteHost,
      null,
      System.Security.Authentication.SslProtocols.Ssl3 |
      System.Security.Authentication.SslProtocols.Tls,
      true);
   if(!(retValue == 150 || retValue == 125))
   {
     throw new IOException(reply.Substring(4));
   }
   StringBuilder mes = new StringBuilder();       
   while(true)
   {
     int bytes = cSocket.Receive(buffer, buffer.Length, 0);
     mes.Append(ASCII.GetString(buffer, 0, bytes));
     if(bytes < buffer.Length)
     {
       break;
     }
   }
   string[] seperator = {"\r\n"};
   string[] mess = mes.ToString().Split(seperator, StringSplitOptions.RemoveEmptyEntries);
   cSocket.Close();
   readReply();
   if(retValue != 226)
   {
     throw new IOException(reply.Substring(4)); …
Run Code Online (Sandbox Code Playgroud)

c# ftp

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