use*_*308 11 asp.net asp.net-mvc-3 visual-studio-2013
目前正在使用asp.net mvc 3 VS 2010.刚刚安装了VS 2013,现在我们的自定义过滤器无法正常工作.呈现页面时,它只显示一个空白页面.过滤器有数据并将其写出,但链接过程中的某些内容不起作用.
var response = filterContext.HttpContext.Response;
response.Filter = new MappingResponse(response.Filter);
Run Code Online (Sandbox Code Playgroud)
在visual studio 2010中,过滤器是System.Web.HttpResponseStreamFilterSink.
在visual studio 2013中,过滤器是 Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter
甚至无法在docs中找到该类.当我调用stream类时,它似乎没有链接Write方法.
这是我写出流的实际代码
var responseBuffer = UTF8Encoding.UTF8.GetBytes( htmlPage );
responseStream.Write( responseBuffer, 0, responseBuffer.Length );
Run Code Online (Sandbox Code Playgroud)
gim*_*ael 10
经过长时间的挖掘,我注意到VS2013增加了一个新产品; SignalR - 事实证明它与ArteryFilter问题有关.
因此,为了解决此问题,请取消选中"调试"按钮旁边的"启用浏览器链接"功能.过滤器再次按预期工作.VS2013没有链接过滤器仍然很奇怪.

另请注意,这是一般的ASP.NET功能,因此不限于MVC.
保留历史 - 答案在上面
我遇到了同样的事情,但到目前为止它似乎与新的IISExpress有关,而不是VS2013 perse.在VS2012中运行良好的东西与安装VS2013引入的命运相同.
通过正常的IIS执行时问题消失,因此您的代码工作正常.如果您找到了禁用此方法的方法,请告诉我{Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.ArteryFilter}.
进一步调查显示,VS2013确实改变了applicationhost.config(通常位于%USERPROFILE%\ documents\IISexpress\config中).我将备份重命名为ApplicationHost.config.20120825120333.bak.这个谜团的解决方案在某种程度上隐藏在此配置更改中.
直接恢复配置使IISExpress无法从VS2013启动.
一个不太好的解决方案:
您可以关闭调试(相当于CTRL + F5),IISExpress将按预期执行和工作.启用调试将再次引入此条目的功能.
<system.web>
<compilation targetFramework="4.5" debug="false"/>
<httpRuntime targetFramework="4.5"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1649 次 |
| 最近记录: |