我们目前正在为我们正在为Windows Azure开发的应用实施通知功能。我们希望告知用户他们感兴趣的操作(例如文件的导入和导出等)。此通知特定于每个登录用户。
我们一直在使用ServerSentEvents,我们发现此列表背后有一个事件。因此,在第二个操作发生之前,我们不会开始看到通知,并且通知是针对第一个操作。在我们的开发环境中,这个问题总会发生,但在Azure中,它似乎按预期工作(有时!!!)
我们正在使用Event Queue和Channel Initialiser的默认实现。我们通过EventPublisher.WriteTo方法发布一个主题和一个serverevent。
以下是我们对主题的实施:
public class UserNotificationsTopic : Topic
{
[RouteInput]
public Guid UserId { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as UserNotificationsTopic);
}
public bool Equals(UserNotificationsTopic other)
{
if (ReferenceEquals(null, other)) return false;
return ReferenceEquals(this, other) ||
UserId.Equals(other.UserId);
}
public override int GetHashCode()
{
return UserId.GetHashCode();
}
}
我们的ServerEvent的实现:
public class UserNotificationServerEvent : IServerEvent
{
public string Id { get; private set; }
public string Event { get; private set; }
public int? Retry { get; set; }
public object Data { get; private set; }
public UserNotificationServerEvent(string id, string @event, object data)
{
this.Id = id;
this.Event = @event;
this.Data = data;
}
}
任何帮助,建议将不胜感激!
由于
斯科特
答案 0 :(得分:0)
我想我找到了解决方案(在我的同事的帮助下)。
我们阅读有关SignalR并发现它在Azure中存在类似问题(后面有一个事件),建议的解决方案是将urlCompression的属性添加到Azure Web角色的Web.config中。
我添加了IIS7.5的默认设置:
<urlCompression doStaticCompression="true" doDynamicCompression="false"/>
这似乎解决了这个问题!我不知道为什么,所以如果有人可以提供帮助,请随意添加。
无论如何,我只是觉得我会分享更新。