0
Good morning, I’m developing a website to run in local intranet format on IIS. With technologies asp.net ADO in format WebForms, I’m using the library SignalR to monitor a simple table on SQL Server Express via SqlDependency, that shows customers equal real-time notifications from the top of the stackoverflow site. Users are authenticated on the site via authentication Forms, the implementation is functional but when startar the site it will be slow and slow until the lock. I imagine the flow of calls to the bank is jamming the network/OSI. Look at the implementation code, if anyone can point out what is causing the slowness.
Hub class:
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace ZaniADV
{
[HubName("MyHub")]
public class MyHub : Hub
{
public static void Show()
{
IHubContext context =
GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.All.displayStatus();
}
}
}
Statup class:
using Microsoft.Owin;
using Owin;
using Microsoft.AspNet.SignalR;
[assembly: OwinStartup(typeof(ZaniADV.Startup))]
namespace ZaniADV
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalHost.Configuration.DefaultMessageBufferSize = 500;
app.MapSignalR();
}
}
}
Global.asax
namespace ZaniADV
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
SqlDependency.Start(ConfigurationManager.ConnectionStrings
["MyConnectionString"].ConnectionString);
}
protected void Application_End()
{
SqlDependency.Stop(ConfigurationManager.ConnectionStrings
["MyConnectionString"].ConnectionString);
}
}
}
Code-Behind page Menunotification.aspx.Cs
[WebMethod]
public static IEnumerable<Inbox> GetData()
{
using (var connection = new SqlConnection
(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))
{
connection.Open();
using (var command = new SqlCommand(@"SELECT [IndexID],
[Numero] FROM [AdvogadoDB].[dbo].[IndexA] WHERE [AdvogadoID] =" +
AdvogadoCRUD.ReturnAdvogadoID((Guid)Membership.GetUser().ProviderUserKey),
connection))
{
command.Notification = null;
SqlDependency.Start(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
if (connection.State == System.Data.ConnectionState.Closed)
connection.Open();
using (var reader = command.ExecuteReader())
return reader.Cast<IDataRecord>()
.Select(x => new Inbox()
{
Numero = x.GetInt32(1),
}).ToList();
}
}
}
private static void dependency_OnChange(
object sender, SqlNotificationEventArgs e)
{
MyHub.Show();
}
}
}
Javascript code of the client page Menunotification.aspx:
<script src="Scripts/jquery-3.1.1.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.js"></script>
<script src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script>
<script type="text/javascript">
$(function () {
var job = $.connection.MyHub;
job.client.displayStatus = function () {
getData();
};
$.connection.hub.start();
getData();
});
function getData() {
var $inbox = $('#inbox');
$.ajax({
url: 'MenuNotification.aspx/GetData',
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
success: function (data) {
//debugger;
if (data.d.length > 0) {
$inbox.empty();
var newdata = data.d;
var rows = [];
for (var i = 0; i < newdata.length; i++) {
rows.push(newdata[i].Numero);
}
$inbox.append(rows.join(''));
}
}
});
}
</script>
<li class="dropdown tasks-menu"
data-toggle="tooltip" data-placement="bottom"
title="Últimas mensagens no inbox">
<a href="/ZaniADV/Views/Designar.aspx" target="_parent"
class="dropdown-toggle" data-toggle="dropdown">
<img src="/ZaniADV/Image/inbox.png" />
<label id="inbox" class="label label-danger"
style="font-size: 12px"></label>
</a>
</li>
BD table:
ALTER DATABASE Advogadobd SET ENABLE_BROKER
Final result:
Client 1:
Client 2:
Resource monitor:
Memoriam:






Have you checked what happens when the site slows down? Whether it is because of processing, memory or indeed network traffic?
– Leandro Angelo
@Leandroangelo the traffic of the TCP protocol gets very high! see the prints added.
– Evandro