小编RuS*_*uSh的帖子

SQL Server 2008 - HashBytes计算列

我正在使用SQL Server 2008.

我有一个名为TitleNVARCHAR(MAX)列,我想为它添加一个唯一索引.因为列大于900字节,所以我决定创建一个HashBytes计算列(基于对StackOverflow的建议).

如何创建HashBytes列?

alter table Softs add TitleHash AS (hashbytes('SHA1',[Title])) PERSISTED;

这工作,计算列已创建.

但是在尝试添加索引时,我收到以下错误:

Adding the selected columns will result in an index key with a maximum length of 8000 bytes.  
The maximum permissible index length is 900 bytes. 
INSERT and UPDATE operations fail if the combined value of the key columns exceeds 900 bytes.  
Do you want to continue?
Run Code Online (Sandbox Code Playgroud)

这是用于创建索引的查询:

CREATE NONCLUSTERED INDEX [UIX_TitleHash] ON [dbo].[Softs] 
(
    [TitleHash] ASC
)WITH (PAD_INDEX  = OFF, …
Run Code Online (Sandbox Code Playgroud)

.net sql sql-server sql-server-2008

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

ASP.NET - 无法将索引YYY处的Unicode字符XXX转换为指定的代码页

在ASP.NET 4网站上,我尝试将数据从数据库加载到GridView时出现以下错误.

无法将索引49处的Unicode字符\ uD83D转换为指定的代码页.

我发现当数据行包含以下内容时会发生这种情况: 文本文本文本

据我了解,此文本无法转换为有效的utf-8响应.

  1. 这是真的吗?

  2. 有没有办法在将文本加载到gridview之前清理文本以防止出现此类错误?


更新:

我有一些进展,我发现当我在字符串上使用Substring方法时,我只会收到此错误.(我正在使用substring将部分文本显示为用户的预览).

例如,在ASP.NET Web窗体中,我这样做:

String txt = test ;

//txt string can also be created by 
String txt = char.ConvertFromUtf32(116) + char.ConvertFromUtf32(101) +char.ConvertFromUtf32(115) + char.ConvertFromUtf32(116) + char.ConvertFromUtf32(32) + char.ConvertFromUtf32(128148);

// this works ok txt is shown in the webform label.
Label1.Text = txt; 

//length is equal to 7.
Label2.Text = txt.Length.ToString();

//causes exception - Unable to translate Unicode character \uD83D at index 5 to specified code page.
Label3.Text = txt.Substring(0, 6); …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net iis

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

在asp.net中使用System.Timers.Timer

我在asp.net网站上使用以下代码.

在应用程序init上,我调用一次InitializeTimer().

代码的目标是每小时运行一次DoWork()(每小时1次).

我还希望代码在每个循环的不同时间执行,所以我添加了随机部分.

我得到的结果是werid,我找不到解释为什么会发生.

代码在2小时后执行该功能,然后在2小时后再执行,然后在3小时后,然后在2小时后再执行2小时.****

谁能解释一下原因?

using System.Timers;
....
private static random = new Random();
....
public static void InitializeTimer()
{
    tTimer = new Timer();
    tTimer.AutoReset = true;
    tTimer.Interval = TimeSpan.FromHours(1.0).TotalMilliseconds;
    tTimer.Elapsed += new ElapsedEventHandler(ClassName1.tMailer_Elapsed);
    tTimer.Start();
}

private static void tTimer_Elapsed(object sender, ElapsedEventArgs e)
{
    tTimer.Interval += random.Next(-5, 5);

    DoWork();
}
Run Code Online (Sandbox Code Playgroud)

更新:

  1. 请不要发布"使用Windows服务"或"预定任务".我的问题是以下代码我不是在寻找更好的选择.此外,在此测试(10小时),网站流量很大,iis池没有重启!

  2. 基于以下MSDN:(http://msdn.microsoft.com/en-us/library/system.timers.timer.interval.aspx)

如果在定时器启动后设置了间隔,则重置计数.例如,如果将间隔设置为5秒,然后将Enabled属性设置为true,则计数将在Enabled设置时开始.如果在计数为3秒时将间隔重置为10秒,则在Enabled设置为true后,Elapsed事件将首次提升13秒.

是否有可能重新设置已用功能的间隔是导致问题的原因?

这意味着当调用tTimer_Elapsed函数时,计数是1小时(最小几毫秒),我的代码是"tTimer.Interval + = random.Next(-5,5);" 正在向Interval添加另一个小时?

.net c# asp.net timer

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

这是ConcurrentDictionary和ConcurrentQueue线程安全的组合吗?

我在以下代码中使用.NET 4中的ConcurrentDictionary和ConcurrentQueue类.

这段代码是线程安全的吗?如果没有,我怎样才能使它成为线程安全的?

public class Page
{
    public string Name {get; set; }
}

public class PageQueue
{
    private ConcurrentDictionary<int, ConcurrentQueue<Page>> pages =
        new ConcurrentDictionary<int, ConcurrentQueue<Page>>();

    public void Add(int id, Page page)
    {
        if (!this.pages.ContainsKey(id))
            this.pages[id] = new ConcurrentQueue<Page>();

        this.pages[id].Enqueue(page);
    }

    public Page GetAndRemove(int id)
    {
        Page lp = null;

        if(this.pages.ContainsKey(id))
            this.pages[id].TryDequeue(out lp);

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

演示:

 public class Demo
 {
     public void RunAll()
     {
         for (int i = 0; i < 10; i++)
             Task.Factory.StartNew(() => Run());
     }

     public …
Run Code Online (Sandbox Code Playgroud)

.net c# .net-4.0 thread-safety

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

ADO.NET实体框架或ADO.NET

我正在开始一个基于ASP.NET和Windows服务器的新项目.

该应用程序计划相当大,并为大量客户提供高频率和高频率.改变数据.

我之前使用Linq-To-Sql或Ado.Net创建了项目.

我对这个项目的计划是使用VS2010和新的EF4框架.

  • 听到其他程序员关于使用Entity Framework进行开发的选项会很棒

  • 以往经验的利弊?

  • 您认为EF4是否已准备好投入生产?

  • 我应该冒风险还是坚持使用普通的旧ADO.NET?

asp.net ado.net entity-framework

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

请求超时 - 请求超时

我的网站运行在Asp.net v4,IIS 7,Windows server 2008上.

我的CPU运行在20-30%,网站响应很快.

每隔2-5分钟我收到以下错误:

Event code: 3001 
Event message: The request has been aborted. 
Exception type: HttpException 
Exception message: Request timed out. , 

Request information: 
    Request URL: http://www.xxxx.com/Services/AxRefresh.asmx/AxUpdate 
    Request path: /Services/AxRefresh.asmx/AxUpdate 
    User host address: 84.110.251.198 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
Run Code Online (Sandbox Code Playgroud)

我读到该错误与最大并发请求限制 http://support.microsoft.com/kb/821268有关

但后来我发现在IIS 7上这个限制已经改变而且不相关. http://msdn.microsoft.com/en-us/library/dd560842(VS.100).aspx

任何其他想法可能是什么问题或从哪里开始寻找?

更新: 找到另一个链接,说明以下所有参数:maxWorkerThreads minWorkerThreads maxIoThreads minFreeThreads minLocalRequestFreeThreads maxconnection executionTimeout

与IIS7 + Asp.NET 4无关

这里是链接 http://learn.iis.net/page.aspx/381/aspnet-20-breaking-changes-on-iis-70

**我的iis7每天仍然会收到100的错误**

windows asp.net iis-7 windows-server-2008

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

查询字符串参数混淆

我想在ASP.NET中混淆一个查询字符串参数.该站点将有大量请求,因此算法不应该太慢.

我的问题是我找到的所有算法都会产生不需要的字符(比如+/=)

这是我想要实现的一个例子:

www.domain.com/?id=1844
Run Code Online (Sandbox Code Playgroud)

www.domain.com/?id=3GQ5DTL3oVd91WsGj74gcQ
Run Code Online (Sandbox Code Playgroud)

混淆的参数应该只包括az和AZ以及0-9个字符.

我知道我可以使用base64进行加密,但这会生成不需要的字符,例如/or =+.

知道可以使用什么算法吗?

更新: 我知道UrlEncoding,我想避免编码字符串.因为这会在网址中生成%F2或%B2等字符.

.net c# asp.net encryption cryptography

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

ASP.NET - 多个Web应用程序 - 共享缓存对象

我正在开发asp.net 4 web项目,该项目是用3个子项目构建的:

  • Site.Admin - 管理员网站 - ASP.NET项目
  • Site.Core - DB&BL - C#Library
  • Site.Web - 前端网站. - ASP.NET项目

该项目托管在32位单一Windows服务器上

我目前正在使用ASP.NET Cache(HttpRuntime.Cache)来缓存对象,但问题是我无法在前端和管理网站之间共享缓存.

从阅读StackOverflow和其他帖子,我知道存在以下选项:

  1. Memcached - 没有稳定的Windows版本?
  2. Couchbase - 没有免费版本?overkill取代asp.net缓存?
  3. AppFabric中
  4. Redis - 没有稳定的Windows版本?

我正在寻找一个免费/非付费的解决方案来取代asp.net缓存.

我想得到一些意见:

  1. Windows安装兼容性

  2. 性能

  3. 易于使用(替换现有的缓存代码)和.NET API.

  4. 其他选择?

.net asp.net memcached caching redis

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

JSP/JSF转换为ASP.NET

我有一个非常大的JSF Web应用程序.我必须将应用程序转换为ASP.NET.我已经手动将Java代码转换为C#代码,并且还使用了JCLA(Microsoft的Java语言转换助手).

将JSF部件转换为ASP.NET的最佳方法是什么?有没有可以帮助缩短工作的工具?

例如,将JSF转换<t:dataList>为ASP.NET datagrid,或转换panelGroupasp:panel等等...

asp.net migration jsf

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

asp.net ThreadPool - 长时间运行的操作

我的应用程序是在iis 6上运行的asp.net 3.5(Windows 2003)此应用程序每天为1000个用户提供服务(在线100-500个用户).

我想每周向客户发送一封电子邮件简报.

每次大约200,000封电子邮件.

这是我正在使用的代码:

 ThreadPool.QueueUserWorkItem(new WaitCallback(AsyncProcessMailerQueue), null);

 private static void AsyncProcessMailerQueue(object data)
 {
    for (int i=0;i<users.count ; i++)
    {
      MailMessage message = new MailMessage();
      .......
      SmtpClient smtpClient = new SmtpClient();
      smtpClient.Send(message);
    }
 }
Run Code Online (Sandbox Code Playgroud)

在本地测试(在我的开发机器上)时,我看到应用程序运行速度慢了很多.

  1. 有没有更好的方法来编写这段代码?
  2. 我应该使用ThreadPool.QueueUserWorkItem还是使用Thread t = new Thread(new ThreadStart(DoWork))创建一个新线程; ?
  3. 为发送简报而创建一个完全独立的应用程序会更好吗?如果在同一台机器上运行此应用程序会有帮助吗?

我在这里看到其他帖子谈论ThreadPool vs Thread但似乎没有人确定哪个更好.

asp.net multithreading threadpool

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