Там какой-либо путь состоит в том, чтобы программно установить имя приложения в Elmah?

Здесь есть пара вещей ...

  1. Класс Topic является действительным TopicRef, поэтому вам не нужно танцевать TopicRef.import здесь.
  2. Вы можете использовать Topic#addToResourcePolicy для добавления утверждений в политику Topic вместо того, чтобы создавать ресурс TopicPolicy самостоятельно.

Таким образом, ваш код может закончиться примерно так:

var topic = new Topic(this, "myTopic", new TopicProps
{
    DisplayName = "myTopic",
    TopicName = "myTopic"
});

topic.AddToResourcePolicy(new PolicyStatement()
    .Describe("Default")
    .AddAwsPrincipal("*")
    .AddActions("sns:Publish",
                "sns:RemovePermission",
                "sns:SetTopicAttributes",
                "sns:DeleteTopic",
                "sns:ListSubscriptionsByTopic",
                "sns:GetTopicAttributes",
                "sns:Receive",
                "sns:AddPermission",
                "sns:Subscribe")
    .AddCondition("StringEquals", /* needs to be a map of condition key to value */);
topic.AddToResourcePolicy(new PolicyStatement()
    .Describe("ProviderBucketAllow")
    .AddAwsPrincipal("*")
    .AddAction("sns:Publish")
    .AddCondition("StringEquals", /* needs to be a map of condition key to value */);

13
задан Stephen Kennedy 27 March 2018 в 15:43
поделиться

1 ответ

По умолчанию Elmah использует приложение AppPool GUID в качестве имени приложения по умолчанию. Это использует это в качестве ключа для идентификации ошибок в таблице Elmah_Error при рассмотрении веб-интерфейса, это создается через, это - HTTP-модуль.

Для меня определили задачу для исследования этой опции для моей компании ранее в этом году. Я не мог найти способ управлять этим по умолчанию, так как Elmah вытягивает имя приложения от HttpRuntime.AppDomainAppId в файле ErrorLog.cs. Вы могли управлять им любым ключом, который Вы хотите; однако, это - GUID AppPool.

После этих слов я смог управлять файлом ErrorLog.cs для превращения, Elmah в вызываемую платформу вместо обработчика базировался один, и допускайте меня, установил ApplicationName. То, что я закончил тем, что делал, изменяло ErrorLog.cs для включения свойства, которое позволило мне определять имя как указано ниже:

public virtual string ApplicationName
{
    get 
    {
        if (_applicationName == null) {  _applicationName = HttpRuntime.AppDomainAppId; }
        return _applicationName;
    }
    set { _applicationName = value; }
}

То, что необходимо будет, вероятно, сделать, корректируют это по-другому и устанавливают ApplicationName не на HttpRuntime.AppDomainAppId но, вместо этого, значение вытягивают от web.config. В целом, это возможно. Путем я сделал это, улучшил ErrorLog.Log(ex) метод, таким образом, я мог использовать Elmah, имеет вызываемую платформу вне веб-приложений. Оглядываясь назад мне жаль, что я не сделал подход app/web.config вместо этого.

Одна вещь иметь в виду при изменении имени приложения в Elmah. http обработчик, который генерирует интерфейс/elmah/default.aspx, больше не будет работать. Я все еще пытаюсь найти время, чтобы вернуться позже вокруг к такому; однако, Вы, возможно, должны изучить создание пользовательского интерфейса при реализации.

6
ответ дан 1 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: