Для решения проблемы с передающей электронной почтой через smtp-сервер, где электронные письма не становятся отправленными мне рекомендовали позволить регистрировать Систему использования. Диагноз. TextWriterTraceListener для трассировки связи с smtp-сервером для отслеживания любых ошибок. Я добавил следующее к своему web.config под узлом:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Net" >
<listeners>
<add name="MyTraceFile"/>
</listeners>
</source>
<source name="System.Net.Sockets">
<listeners>
<add name="MyTraceFile"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add
name="MyTraceFile"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="System.Net.trace.log" />
</sharedListeners>
<switches>
<add name="System.Net" value="Verbose" />
<add name="System.Net.Sockets" value="Verbose" />
</switches>
</system.diagnostics>
Я испытал его на своей машине разработки, и это работало просто великолепно! Я мог легко считать полную связь с smtp-сервером. Однако в продуктивной среде (работающий на IIS 6 в Windows 2003 Server), это не работает вообще. Никакой журнал не становится записанным в файловую систему. Моя первая мысль была то, что, возможно, учетная запись рабочего процесса ASP.NET (СЕТЕВАЯ СЛУЖБА) не имела достаточных прав записать в файловую систему в указанном местоположении. Я зафиксировал это, но все еще не получите журнал. Во-вторых, я думал, что, возможно, папка была установлена на "только для чтения" и зафиксировала это также. Но тем не менее я не получаю записанного журнала.
У кого-либо есть идея, какова проблема могла бы быть? Или возможно некоторый совет относительно того, как я мог зафиксировать это? Заранее спасибо!
Прежде всего, я бы проверил, действительно ли трассировка работает, ничего не записывая в файловую систему. То есть я бы просто использовал обычную трассировку Windows. Для просмотра вывода трассировки я бы использовал DebugView Windows Sysinternals . Конечно, возможно, вам следует изменить свой файл конфигурации, я не очень знаком с синтаксисом.
Теперь, если все работает нормально для обеих сред (разработки и производства), так что вы можете просматривать сообщения трассировки в средстве просмотра, тогда проблема больше сосредоточена на файловой системе и сохранении журнала.
Как вы думаете, куда сохраняется ваш файл журнала? Возможно, это другое место, когда дело касается производственной среды. Я думаю, что в Windows Server 2003 вы должны искать свой файл где-то в WinDir, а не в папке (ах) веб-приложения.
Когда дело доходит до отладки таких проблем, я бы передал учетную запись IIS локальному администратору / администратору домена, чтобы посмотреть, решена проблема или нет. Если это решено, то здесь есть проблема с разрешениями.
Удачи!
Да, вы можете создать случайные числа в любом заданном диапазоне:
var min = 10000;
var max = 99999;
var num = Math.floor(Math.random() * (max - min + 1)) + min;
Или упрощенно:
var num = Math.floor(Math.random() * 90000) + 10000;
-121--983234- Как насчет:
Math.floor(Math.random()*90000) + 10000;
-121--983233- Та же сборка при разработке и производстве? Часто константа условной компиляции TRACE не определена в режиме выпуска. Тогда никакой трассировки не появится.
Пробовали ли вы использовать Process Monitor , чтобы узнать, записывается ли файл System.Net.trace.log или возникает ли ошибка при его создании? Возможно ли, что он просто записывается в странное место, которое вы не ищете (я считаю, что по умолчанию должен быть текущий рабочий каталог рабочего процесса ASP.NET).
Я бы начал с указания полного пути в атрибуте initializeData:
<add
name="MyTraceFile"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\SomePath\System.Net.trace.log"
/>
Если необходимо, убедитесь, что ваше приложение имеет доступ на запись к этому пути, добавив тестовую страницу, которая создает файл в том же каталоге.
Когда вы используете относительный путь, как в вашей текущей конфигурации, я считаю, что он будет относиться к корневому каталогу приложения при работе под IIS. Но при работе под Cassini на машине разработки этого не будет - IIRC будет относиться к% WINDIR% \ System32, но я бы не стал на это полагаться.