我有一个带有一些javascript的MVC 4 Web应用程序,它可以很好地与Internet Explorer配合使用,并且会出现Chrome问题.
我想在Visual Studio 11中使用Chrome作为浏览器进行调试,可以从调试下拉列表中选择:问题是我无法弄清楚如何启用脚本调试:当我通过常规警告调试断点时
没有为此文档加载任何符号
我知道我可能会直接在Chrome中调试脚本,但我更喜欢使用Visual Studio,因为它涉及到几个lenghty js库.
我可以从之前的帖子中看到,使用Visual Studio 2008是不可能的:有没有人知道用Visual Studio 11做到这一点的方法?
PS:附加Chrome进程无效,因为调试模式是"Native"而不是"Script"
PSII:我还尝试使用Attach to: Script CodeAttach ..菜单中的选项附加Chrome (这会将调试模式切换为脚本),但这也无济于事.
javascript debugging asp.net-mvc google-chrome visual-studio-2012
这个问题与另一个线程有关,您可以在这里阅读:使用SignalR 进行表单身份验证,我在用户dfowler的帮助和耐心下尝试了解如何强制在SignalR Hub上形成ASP .NET Forms身份验证.
问题描述:我希望只有经过身份验证的用户才能连接SignalR Hub并接收/发送消息.
入侵场景:入侵者可以捕获/访问访问客户端计算机上临时文件的网页的HTML和Javascripts.因此,该入侵者可以知道建立/使用与Hub的连接所需的所有细节(方法,集线器名称等).dfowler提出的解决方案是实现IConnect:
您将实现IConnected并在Connect if(!Context.User.Identity.IsAuthenticated)中抛出以下代码抛出新的异常("GTFO");
所以我试着用这样的东西
public System.Threading.Tasks.Task Connect()
{
if (!Context.User.Identity.IsAuthenticated
|| !(Context.User.IsInRole("role1") || Context.User.IsInRole("role2")
))
throw new Exception("User not authorized");
return null;
}
Run Code Online (Sandbox Code Playgroud)
一旦经过测试,问题在于,当调用Connect方法时,连接已经建立并且普通抛出异常将无济于事(如果我得到了正确的实际连接应该用于在连接时向客户端发送消息)抛出异常只会产生一条未发送的欢迎消息).
事实上,从我的测试中,客户端仍然可以读取所有消息(并发送它们).
现在,我想到的方法:
还有其他方法吗?任何方式终止服务器端的连接或应该接受唯一真正的身份验证是主机网页之一(打开所有signalR客户端攻击的大门?)
编辑
以下是我使用IConnect.Connect无条件抛出异常的方法(浏览器IE9)时客户端 - 服务器通信的顺序:

它看起来像foreverFrame失败但是longPolling回退正在建立并且仍然有效 - 这是在抛出Javascript中捕获的错误之后
if (connection.state === signalR.connectionState.connecting) {
// Connection hasn't been started yet
throw "SignalR: Connection has not …Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2012RC中,我正在尝试恢复QuickFind,它正确地工作到我不幸决定使用" 在文件中查找"功能的那一刻.
现在按CTRL + F或CTR + shift + F将在两种情况下调出查找和替换[在文件中查找,替换文件]窗口.我临时设法添加了"切换到快速查找"工具栏图标,该图标只运行一次.但现在即使这样也行不通.
我试图删除在文件和QuickFind中查找的键盘快捷方式,并将其重新分配给QuickFind,但它没有帮助.
如果我使用QuickLaunch也是如此:无论我选择QuickFind还是Find In Files,我都会在文件中找到.
有什么想法重新安装整个应用程序?
编辑
这似乎只发生在特定文件中.如果我在编辑器中调出另一个文件,Ctrl + F将弹出QuickFind.看起来它正在存储搜索方法的某个地方并且正在覆盖QuickFind.很混乱.我有什么想法可以解决这个问题?
我的ASP.NET MVC 4 Web应用程序正在向客户端显示经常更新的数据.数据源自外部源(安装在服务器上的应用程序)并由SQL Server 2008 R2处理.
目前,数据流非常传统:客户端从ASP.NET轮询,ASP.NET轮流从SQL Server轮询.
为了避免轮询(现在我需要在Web应用程序的用户之间进行实时交互),我正在改变推送方法,signalR用于向客户端广播数据.这样可以增加用户体验的流畅性,还可以减少客户端和ASP.NET服务器之间轮询的开销.
现在的问题是反转SSRV和ASP.NET之间的流程:我想以最有效的方式将数据从SSRV推送到ASP.NET.
SSRV运行昂贵的查询来导入一些外部数据 - 一旦数据被处理,它们也可以通过广播在互联网上共享.
我当前的穷人方法:向Web应用程序(在localhost上)发出POST Http请求以发送数据(我正在使用CLR函数).
处理完数据后,我将它们打包准备好,将HttpWebRequest它们排入Service Broker中以避免影响其他活动,我就完成了.
我已经注销,SqlDependency因为它会强制我查询数据 - 这不是一个很大的优势(我会在SQL Server上运行查询的localhost HTTP请求)
与此同时,我觉得应该有一个更简洁的方法来做到这一点.
有什么建议?
我已经测试了我的Asp.NET MVC应用程序以运行SignalR,它text/event-stream使用Visual Studio 2012,IIS Express(Microsoft-IIS/8.0)和Chrome 正确处理带有serverSentEvents连接的MIME.
现在我正在部署到生产环境(IIS 7.5,.NET Framework 4.5,Windows Server 2008R2),我注意到SignalR总是回退到LongPolling传输,因为signalr/connect?transport=serverSentEvents etc超时.
有没有办法配置Microsoft-IIS/7.5以使ServerSentEvents有效?或者这只能在8.0+上实现?
当我尝试直接访问url时,
'http://my.webapp.com/MyHub/signalr/connect?transport=serverSentEvents&connectionId=624849a4-45c6-458b-b6d0-f7cb023ab226&connectionData=%5B%7B%22name%22%3A%22myHub%22%7D%5D&tid=2'我得到一个包含看起来像SSE数据包的文件:
data: initialized
id: 14476
data: {"MessageId":"14476","Messages":[],"Disconnect":false,"TimedOut":false,"TransportData":{}}
Run Code Online (Sandbox Code Playgroud)
所以我不确定为什么超时会达到要求.