Попробуйте настроить брандмауэр хранилища с Исходящими IP-адресами приложения функций , чтобы сделать вывод:
На панели функций в портале Azure, Функции платформы> Обозреватель ресурсов. [119 ]
Найдите outboundIpAddresses
и добавьте все из них в список IP-адресов брандмауэра.
Если наши функции выполняются в специальном плане обслуживания приложений (например, «Базовый», «Стандартный» и т. Д.), Добавьте possibleOutboundIPAddresses
, если мы хотим масштабировать план для других уровней ценообразования.
Если наши функции находятся в плане потребления, нам, возможно, придется внести в белый список центр обработки данных приложений функций.
По умолчанию два важных метода GetHashCode()
и Equals()
. Важно что, если две вещи равны (Equals()
возвращает true), что у них есть тот же хэш-код. Например, Вы могли бы "возвратить FooID"; как GetHashCode()
, если Вы хотите это как соответствие. Можно также реализовать IEquatable<Foo>
, но это является дополнительным:
class Foo : IEquatable<Foo> {
public string Name { get; set;}
public int FooID {get; set;}
public override int GetHashCode() {
return FooID;
}
public override bool Equals(object obj) {
return Equals(obj as Foo);
}
public bool Equals(Foo obj) {
return obj != null && obj.FooID == this.FooID;
}
}
Наконец, другая альтернатива должна обеспечить IEqualityComparer<T>
, чтобы сделать то же.
Поскольку Вы хотите FooID
быть идентификатором для группы, необходимо использовать это в качестве ключа в словаре вместо объекта Foo:
Dictionary<int, List<Stuff>>
, Если бы Вы использовали бы эти Foo
объект как ключ, Вы просто реализовали бы GetHashCode
и Equals
метод, чтобы только рассмотреть FooID
свойство. Name
свойство просто было бы собственным весом насколько эти Dictionary
был затронут, таким образом, Вы будете просто использовать Foo
в качестве обертки для int
.
Поэтому лучше использовать эти FooID
значение непосредственно, и затем Вы ничего уже не должны реализовывать как Dictionary
поддержки с помощью int
как ключ.
Редактирование:
, Если Вы хотите использовать Foo
класс, поскольку ключ так или иначе, эти IEqualityComparer<Foo>
легко реализовать:
public class FooEqualityComparer : IEqualityComparer<Foo> {
public int GetHashCode(Foo foo) { return foo.FooID.GetHashCode(); }
public bool Equals(Foo foo1, Foo foo2) { return foo1.FooID == foo2.FooID; }
}
Использование:
Dictionary<Foo, List<Stuff>> dict = new Dictionary<Foo, List<Stuff>>(new FooEqualityComparer());
Для Foo необходимо будет переопределить объект. GetHashCode () и объект. Равняется ()
, словарь назовет GetHashCode () для вычисления блока хеша для каждого значения и Равняется, чтобы выдержать сравнение, идентичны ли два Foo.
Удостоверяются, что вычислили, хорошие хэш-коды (избегайте многих равных объектов Foo, имеющих тот же хэш-код), но удостоверьтесь два, равняется Foos, имеют тот же хэш-код. Вы могли бы хотеть запуститься с Равняться-метода и затем (в GetHashCode ()) xor хэш-код каждого участника, в котором Вы выдерживаете сравнение, Равняется.
public class Foo {
public string A;
public string B;
override bool Equals(object other) {
var otherFoo = other as Foo;
if (otherFoo == null)
return false;
return A==otherFoo.A && B ==otherFoo.B;
}
override int GetHashCode() {
return 17 * A.GetHashCode() + B.GetHashCode();
}
}