小编Jef*_*ood的帖子

ASP.NET-MVC(IIS6)高流量时出错:指定的强制转换无效

我刚刚在我简陋的专用服务器(Win2003)上启动了我的小型webapp ...运行ASP.NET MVC,LINQ2SQL,SQL Express 2005和IIS6(使用通配符映射设置)

该网站90%的时间运行顺利.但是,在相对较高的流量上,LINQ2SQL会抛出错误:指定的强制转换无效

此错误仅在高流量时抛出.我没有想法,为什么会发生这种情况.缓存并没有完全消除这个问题.

以前有人见过这个问题吗?有什么秘密的SQL Server调整我应该做的吗?或者至少,有关如何诊断此问题的任何想法?因为我出去了!

纳伊米

Stacktrace(来自事件日志):

at System.Data.SqlClient.SqlBuffer.get_SqlGuid()
   at System.Data.SqlClient.SqlDataReader.GetGuid(Int32 i)
   at Read_Friend(ObjectMaterializer`1 )
   at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
   at Dudlers.Web.Models.DudlersDataContext.GetFriendRequests(Guid userId) in C:\Web\Models\DudlersDataContext.cs:line 562
   at Dudlers.Web.Controllers.BaseController.View(String viewName, String masterName, Object viewData) in C:\Web\Controllers\BaseController.cs:line 39
   at System.Web.Mvc.Controller.View(String viewName)
   at Dudlers.Web.Controllers.CatController.Index() in C:\Web\Controllers\CatController.cs:line 25
   at lambda_method(ExecutionScope , ControllerBase , Object[] )
   at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(MethodInfo methodInfo, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.c__DisplayClassb.b__8()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) …

asp.net-mvc iis-6 sql-server-2005 linq-to-sql

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

重构Fibonacci算法

我多年没有使用过静态类型的语言,并且自己设定了使用C#加速的任务.我正在使用我常用的技巧来完成15个练习http://www.jobsnake.com/seek/articles/index.cgi?openarticle&8533作为我的第一个任务.

我刚刚完成了第二个Fibonacci任务,它没有花很长时间并且工作得很好,但在我看来看起来很难看,而且我确信可以通过更少的优雅代码来实现.

我通常喜欢通过与已经知道他们正在做什么的人进行结对编程来学习,但是这个选项今天不对我开放,所以我希望在这里发布将是下一个最好的事情.

所以对于所有C#Jedi来说,如果你要重构下面的代码,它会是什么样子?

using System;
using System.Collections;

namespace Exercises
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Find all fibinacci numbers between:");
            int from = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("And:");
            int to = Convert.ToInt32(Console.ReadLine());
            Fibonacci fibonacci = new Fibonacci();
            fibonacci.PrintArrayList(fibonacci.Between(from, to));

        }
    }

    class Fibonacci
    {   
        public ArrayList Between(int from, int to)
        {               
            int last = 1;
            int penultimate = 0;
            ArrayList results = new ArrayList();
            results.Add(penultimate);
            results.Add(last);

            while(last<to)
            {
                int fib = last + penultimate;
                penultimate = …
Run Code Online (Sandbox Code Playgroud)

c# refactoring

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

为什么缓存的Regexp优于已编译的Regexp?

这只是一个满足我好奇心的问题.但对我来说这很有意思.

我写了这个简单的小基准.它以随机顺序调用3个Regexp执行变体几千次:

基本上,我使用相同的模式,但以不同的方式.

  1. 没有任何你的普通方式RegexOptions.从.NET 2.0开始,这些不会被缓存.但是应该"缓存",因为它保存在一个非常全局的范围内而不是重置.

  2. RegexOptions.Compiled

  3. 调用静态Regex.Match(pattern, input),它在.NET 2.0中得到缓存

这是代码:

static List<string> Strings = new List<string>();        
static string pattern = ".*_([0-9]+)\\.([^\\.])$";

static Regex Rex = new Regex(pattern);
static Regex RexCompiled = new Regex(pattern, RegexOptions.Compiled);

static Random Rand = new Random(123);

static Stopwatch S1 = new Stopwatch();
static Stopwatch S2 = new Stopwatch();
static Stopwatch S3 = new Stopwatch();

static void Main()
{
  int k = 0;
  int c = 0;
  int c1 = 0;
  int …
Run Code Online (Sandbox Code Playgroud)

c# regex performance benchmarking

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

有没有办法在没有iPhone的情况下测试iPhone上的网站?

我想测试一个网站,看看它如何与iPhone配合使用,但我没有iPhone或iPod touch.有没有办法可以在不拥有网站的情况下测试网站的工作方式?

我真正想要解决的是Stackoverflow的WMD降价编辑器如何在iPhone上运行.我听说超链接和图像提示创建得太高.我想我知道如何解决这个问题,但盲目发展却相当困难.

iphone cross-browser web-testing

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

在C#List中查找重复项索引的最优雅方法是什么

我有一个List<string>包含重复的东西,我需要找到每个的索引.

除了循环遍历所有项目之外,最优雅,最有效的方法是什么.我在.NET 4.0上,所以LINQ是一个选项.我做了大量的搜索并连接找到任何东西.

样本数据:

var data = new List<string>{"fname", "lname", "home", "home", "company"}();
Run Code Online (Sandbox Code Playgroud)

我需要得到"家"的索引.

c# search list duplicates

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

PHP + MYSQLI:使用预准备语句的变量参数/结果绑定

在我即将结束的项目中,我已经为PHP编写并实现了一个对象关系映射解决方案.在怀疑者和梦想家喊出"怎么样?"之前,放松一下 - 我还没有找到一种方法来进行后期的静态绑定工作 - 我只是以最好的方式解决它.

无论如何,我目前没有使用预准备语句进行查询,因为我无法想出一种方法将可变数量的参数传递给bind_params()bind_result()方法.

你问,为什么我需要支持可变数量的参数?因为我的模型的超类(将我的解决方案想象为hack-up-PHP ActiveRecord wannabe)是定义查询的地方,所以find()方法例如不知道绑定需要多少参数.

现在,我已经考虑构建一个参数列表并将字符串传递给eval(),但我不太喜欢这个解决方案 - 我宁愿只实现自己的安全检查并传递语句.

有没有人有任何关于如何完成这项工作的建议(或成功案例)?如果你可以帮助我解决这个第一个问题,也许我们可以解决结果集的绑定(我怀疑会更困难,或者如果它涉及初始查询以确定表结构,则至少需要更多资源).

php mysql orm mysqli

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

如何更改MSBuild在Team Foundation Build下使用的构建目录?

尝试使用Team Foundation Build构建我的应用程序时出现以下错误:

C:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1682,9):错误MSB3554:无法写入输出文件"obj\Release\Company.Redacted.BlahBlah.Localization.Subsystems. Startup_Shutdown_Processing.StartupShutdownProcessingMessages.de.resources".指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符.

我的项目在我的开发机器上构建良好,因为源只有两个文件夹深,但TF Build似乎使用了一个非常深的目录导致它中断.如何更改使用的文件夹?

编辑:我检查了存储在源代码管理中的构建的.proj文件,发现了以下内容:

<!--  BUILD DIRECTORY
 This property is included only for backwards compatibility. The build directory used for a build 
 definition is now stored in the database, as the BuildDirectory property of the definition's 
 DefaultBuildAgent. For compatibility with V1 clients, keep this property in sync with the value 
 in the database.
-->
<BuildDirectoryPath>UNKNOWN</BuildDirectoryPath>
Run Code Online (Sandbox Code Playgroud)

如果这存储在数据库中,我该如何更改它?

编辑:找到以下博客文章,可能指向我的解决方案.现在我只需要弄清楚如何更改Build Agent中的设置. http://blogs.msdn.com/jpricket/archive/2007/04/30/build-type-builddirectorypath-build-agent-working-directory.aspx

目前我的工作目录是"$(Temp)\ $(BuildDefinitionPath)",但现在我不知道哪些通配符可用于指定不同的文件夹.

msbuild tfs tfsbuild

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

使用"记住我"功能在.NET 2.0中进行身份验证

我的客户希望我在用户登录时启用"记住我"复选框.我正在加密并将用户名和密码存储在cookie中.

但是,当它处于密码模式时,您无法写入文本框.

我已经看过很多次,所以他们是怎么做到的?

提前致谢!

.net forms authentication cookies

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

在黄瓜的场景轮廓之前运行登录步骤

我正在使用带有webrat/mechanize的黄瓜来测试PHP站点,我试图通过避免运行不必要的步骤来提高测试运行的速度.

我想使用场景大纲来检查大量页面是否可访问/受保护,具体取决于登录的用户:

Scenario Outline: Check page access is secure
  Given I am logged in as "<user>"
    And I am on <page>
  Then I should see "<message>"
Examples:
  |user  |page      |message                |
  |admin |home page |Welcome to my site     |
  |admin |admin page|Site administration    |
  |editor|home page |Welcome to my site     |
  |editor|admin page|Access denied          |
  |guest |home page |Please login           |
  |guest |admin page|Access denied          |
  ...
Run Code Online (Sandbox Code Playgroud)

这是有效的,但鉴于我有10个角色和数百个要检查的页面,每次大纲运行时运行登录步骤会产生大量开销.

我想知道是否有办法为每个角色运行一次登录步骤,然后轮流访问每个页面而无需每次都登录.即运行"登录,访问1,访问2,访问3"而不是"登录,访问1,登录,访问2,登录,访问3".

我已经尝试过使用hooks和Background,但似乎无法找到一种有效的方法.这可能吗?

cucumber

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

rails paperclip S3具有动态存储桶名称

我正在使用paperclip将我的文档上传到Amazon S3.我想在上传新文档时自动创建一个包含项目ID的存储桶.

因此,在我的控制器中,我有这个:

 def new
    @pmdocument = Pmdocument.new
    @pmdocument.projectmilestone_id=params[:projectmilestone_id]
Run Code Online (Sandbox Code Playgroud)

其中projectmilestone_id是我项目的foreign_key(用作我的桶名)

我的模型是这样的:

class Pmdocument < ActiveRecord::Base
  belongs_to :projectmilestone
  attr_accessible :id, :name, :description, :projectmilestone_id, :pmdoc, :projectmilestone_attributes
  attr_protected :pmdoc_content_type, :pmdoc_size
  accepts_nested_attributes_for :projectmilestone, :allow_destroy => false
  has_attached_file :pmdoc,
    :storage => :s3,
    :bucket => self.projectmilestone_id.to_s,
    :s3_credentials => File.join(Rails.root, 'config', 's3.yml')
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,我收到此错误:未定义的方法`projectmilestone_id'for#

我检查了我的控制器,并在那里正确加载了projectmilestone_id字段.

我试图将铲斗线更改为:bucket => self.name然后错误消失了.

该模型工作正常,因为projectmilestone_id正确存储在db中.

我的猜测是它可以链接到可访问的属性,但它似乎也可以.

怎么了?非常感谢!!!


我真的不明白:

我决定不再改变我的桶了(不管怎样,坏主意因为所有S3的名称都必须是唯一的),而是改变我的路径.

这是代码:

:path => proc { |attachment| "#{attachment.istance.projectname}/:attachment/:id/:basename.:extension" },
Run Code Online (Sandbox Code Playgroud)

未创建具有项目名称的第一个文件夹.如果我按名称,甚至描述(pmdocuments的另一个字段)替换projectname,它可以工作,但不能与projectname一起使用.当然,我检查了projectname是否正确填充.原因在于其他地方.

任何线索?

ruby-on-rails amazon-s3 paperclip

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