小编jam*_*con的帖子

每个控制器/操作方法启用/禁用会话状态

我们正在构建一个ASP.NET MVC应用程序,该应用程序将部署在硬件负载平衡器后面,该负载平衡器支持缓存等.

我们的建议是手动定义负载均衡器应缓存哪些URL模式.这对我们来说是一个非常简单的过程,因为我们的"目录"页面是相对静态的,然后是"订单"页面,而不是.

必须避免在缓存页面上使用会话状态,因为负载均衡器会缓存整个响应 - 这包括发送的任何cookie.

理想情况下,会有一个属性可以应用于控制器或动作方法,允许选择性地使用会话状态,但似乎没有.我意识到,如果使用离开"会话区域",这样的方法会导致会话丢失 - 这很好.

除了重新实现整个ASP.NET MVC HTTP控制器...任何建议?

提前致谢.

asp.net-mvc caching session-state zeus

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

ASP.NET重写的自定义错误不会发送内容类型标头

我的web.config中有以下配置:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/Error.html">
    <error statusCode="404" redirect="~/Error/Error.html" />
    <error statusCode="400" redirect="~/Error/Error.html" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)

FWIW,这是一个ASP.NET MVC 3应用程序.

当我生成错误.例如通过访问..

http://testserver/this&is&an&illegal&request
Run Code Online (Sandbox Code Playgroud)

..被ASP.NET请求验证阻止..返回错误页面,但没有内容类型标头.IE推断内容并呈现HTML,但Firefix(正确IMO)将内容视为文本并显示HTML代码.

是否需要采取其他步骤来说服ASP.NET发送内容类型标头?我认为这与它从文件系统中挑选文件的事实有关,但是MIME类型似乎在服务器上正确配置.

asp.net

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

在Visual Studio 2010中使用Microsoft AJAX Minifier一键式发布

微软的AJAX Minifier提供了一个构建任务,可以在TFS或本地构建定义使用.

我在本地项目文件(构建到单独的文件)和TFS构建定义(覆盖现有的JS文件)中都使用了这个.

我想转而使用Visual Studio 2010的一键发布功能而不是TFS构建定义,但是在项目文件中将缩小任务添加为AfterBuild目标似乎不会影响单击发布功能.

使用此线程这些 文章中的信息,我尝试在我的WAP根目录中创建一个名为"[ProjectName] .wpp.targets的文件,并使用以下XML:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
<Target Name="Minify" BeforeTargets="MSDeployPublish">
    <ItemGroup>
      <JS Include="**\*.js" Exclude="**\*.min.js;**\*vsddoc.js;**\*debug.js" />
    </ItemGroup>
    <ItemGroup>
      <CSS Include="**\*.css" Exclude="**\*.min.css" />
    </ItemGroup>
    <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css" />
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

这似乎没有任何效果,不幸的是,Visual Studio对这些工具的反馈或调试信息没有太多帮助.

有没有人使用Visual Studio 2010一键发布功能来缩小JavaScript/CSS?

visual-studio-2010 msdeploy microsoft-ajax-minifier

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

Visual Studio - 防止停止调试关闭Internet Explorer

在如果按运行一个Web项目的Visual Studio Go调试工具栏上的按钮,然后按停止Stop调试工具栏上的按钮,IE浏览器是由IDE打开和关闭.

有没有办法阻止IDE在停止调试时关闭Internet Explorer?我想这样做是为了让我自己在编辑代码时引用IE中页面的内容.

asp.net visual-studio

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

Team Foundation Server - 以前合并的更改集重新出现在合并向导中

我们的SCM结构如下:

Main
 |--Release
Run Code Online (Sandbox Code Playgroud)

开发人员检查主要.当我们想要发布时,我们挑选从Main到Release的合并变更集,测试并运行我们的部署构建,构建和部署应用程序并标记发布分支.

要合并,我会使用Source Control Explorer右键单击'Main'> Branching and Merging> Merge.选择"选定的变更集"只有一个目标分支(发布).选择更改集,在本地测试,签入发布.这已经好几个月了.

但是,今天一些非常早期的变更集刚刚出现在源控件合并向导中,位于列表的顶部.但奇怪的是,不是全部.

等效的CLI命令是

tf merge /candidate /recursive [source] [destination]
Run Code Online (Sandbox Code Playgroud)

此命令返回以下列表:

   3* Person.One      27/11/2009
  43* Person.Two      21/12/2009
  50* Person.Two      22/12/2009
  54* Person.Two      22/12/2009
  57* Person.Two      22/12/2009
 114* Person.One      12/01/2010
 116* Person.One      13/01/2010
 128* Person.One      15/01/2010
 138* Person.One      19/01/2010
 139* Person.One      19/01/2010
7846  Person.Three    19/01/2012
7847  Person.Three    19/01/2012
7848  Person.Three    19/01/2012
7849  Person.Three    19/01/2012
8030  Person.Four     31/01/2012
8031  Person.Four     31/01/2012
8032  Person.Four     31/01/2012
8045  Person.Five     01/02/2012
8050  Person.Four     01/02/2012
8052  Person.Six      01/02/2012 …
Run Code Online (Sandbox Code Playgroud)

tfs visual-studio-2010 visual-studio tfs2010

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

在web.config中使用自定义错误设置时出现IIS7"单线"错误

我有一个ASP.NET MVC应用程序,它返回404,偶尔会在各种适当的点返回500个状态代码.

Response.StatusCode = (int)HttpStatusCode.NotFound;
Run Code Online (Sandbox Code Playgroud)

当我设置其中一个状态代码时,我还适当地设置了TrySkipIisCustomErrors属性.

Response.TrySkipIisCustomErrors = true
Run Code Online (Sandbox Code Playgroud)

我现在要做的是,配置IIS来传递这些我自己设置的错误,并捕获可能发生的任何其他错误(例如静态文件上的404,我没有向ASP.NET发送请求,我的应用程序中有500个错误或未被捕获的错误(可能是框架没有设置TrySkipIisCustomErrors属性).

我的system.webServer/httpErrors节点如下所示:

<httpErrors existingResponse="Auto" errorMode="Custom">
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

这将返回我自己的ASP.NET错误,其中我设置了TrySkipIisCustomErrors = true,以及未捕获的500s,静态文件404等的标准IIS错误页面.

然后我尝试像这样修改它:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL">
  <clear />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

我相信这应该显示我的自定义错误页面,而不是标准的IIS页面.但是,当我添加此代码时,我得到一行IIS错误("由于发生了内部服务器错误,因此无法显示页面.")并返回500状态代码.

我认为这是由于我的配置错误,但我不能为我的生活了解我做错了什么!

我也试过这种方法,结果相同:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File">
  <clear />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

即使将重定向设置为完全不同的URL也会产生同样的问题.

我一直在使用此页面作为参考:http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

错误文件肯定存在,我可以使用浏览器直接命中它.

顺便说一句,我不完全确定我应该使用system.Web\customErrors节点做什么.这是一个仅限IIS6的设置,还是以某种方式与ASP.NET相关?目前我没有将它包含在我的web.config中.

asp.net iis iis-7

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

如何使用缓存模式避免数据库查询风暴

我们正在使用 PostgreSQL 数据库和 AppFabric 服务器,运行一个中等繁忙的 ASP.NET MVC 电子商务站点。

遵循缓存侧模式,我们从缓存中请求数据,如果不可用,则查询数据库。

这种方法会导致“查询风暴”,即数据库在短时间内收到对同一数据的多个查询,同时正在刷新缓存中的给定对象。更长时间运行的查询会加剧这个问题,显然对同一数据的多个请求会导致查询运行更长时间,形成令人不快的反馈循环。

此问题的一种解决方案是对缓存使用读锁定。然而,这本身可能会导致在 Web 场情况下(甚至在单个繁忙的 Web 服务器上)的性能问题,因为 Web 服务器在读取时被无故阻止,以防发生数据库查询。

另一种解决方案是放弃缓存侧模式并独立地为缓存设定种子。这是我们为缓解我们在此问题上看到的直接问题而采取的方法,但并非所有数据都可以这样做。

我在这里错过了什么吗?人们采取了哪些其他方法来避免这种行为?

caching appfabric

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

在SQL Server 2005全文索引中删除干扰词

在一个非常典型的场景中,我的Web应用程序上有一个"搜索"文本框,其中用户输入直接传递给存储过程,然后使用全文索引搜索两个表中的两个字段,这两个表使用适当的键连接.

我正在使用CONTAINS谓词来搜索字段.在传递搜索字符串之前,我执行以下操作:

SET @ftQuery = '"' + REPLACE(@query,' ', '*" OR "') + '*"'
Run Code Online (Sandbox Code Playgroud)

例如,将城堡改为"*"或"城堡*".这是必要的,因为我希望人们能够在cas上搜索并获得城堡的结果.

WHERE CONTAINS(Building.Name, @ftQuery) OR CONTAINS(Road.Name, @ftQuery)
Run Code Online (Sandbox Code Playgroud)

问题是,现在我已经附加通配符每个单词的末尾,噪音词(如)也通配符追加,因此不再出现会被丢弃.这意味着搜索城堡将返回带有剧院等单词的项目.

将OR更改为AND是我的第一个想法,但如果在查询中使用了干扰词,则似乎只返回不匹配.

所有我试图实现是允许用户输入多个空格分隔单词respresent无论是整体还是他们搜索的词的前缀,以任意顺序-落音词,如从输入(否则当他们搜索城堡时,他们会得到一个大项目列表,结果他们需要在列表中间的某个位置.

我可以继续实现我自己的干扰消除程序,但似乎全文索引应该能够处理的东西.

感谢任何帮助!

杰米

full-text-search sql-server-2005

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