Asp.Net — использование Mailto во время отладки на LocalHost

У меня есть следующая строка кода в моем приложении Asp.Net:

<a href="mailto:email_address">Click To Email</a>

Моя компания использовала именно эту строку кода (где «email_address» — адрес электронной почты человека), чтобы пользователи могли отправлять электронные письма людям, и она работает над нашими развернутыми приложениями на веб-сервере. Однако, когда я нажимаю, чтобы отправить электронное письмо во время отладки (Visual Studio 2010, LocalHost), я получаю следующую ошибку:

введите здесь описание изображения

Кто-нибудь знает, что вызывает эту ошибку?


person Eric R.    schedule 21.09.2012    source источник
comment
Это не сама строка кода — mailto: просто вызывает почтовое приложение по умолчанию. Outlook немного необычен тем, что при обработке ссылок mailto: диалог создания электронной почты является модальным - я понятия не имею, почему. Возможно, если браузер был запущен VS, а VS работает с учетными данными, отличными от ваших, окно браузера может не иметь разрешений для вызова Outlook, но я не уверен, почему это произойдет. В качестве теста попробуйте запустить VS от имени администратора (щелкните правой кнопкой мыши или Shift-щелчок правой кнопкой мыши по значку в зависимости от того, где он находится). Это может по крайней мере сузить возможности   -  person Basic    schedule 21.09.2012
comment
Хмммм, ты прав @Basic! Если я запускаю от имени администратора, то ссылка работает. Кроме того, когда я меняю браузер, в котором он отлаживает, не работая от имени администратора, ссылка работает. Так что должно быть что-то о браузере по умолчанию, который VS2010 использует при отладке.   -  person Eric R.    schedule 21.09.2012
comment
‹a href=mailto:email_address target=_blank›Click To Email‹/a› Попробуйте это, если оно работает   -  person A Developer    schedule 21.09.2012
comment
Используете ли вы аутентификацию на своем сайте, в частности, используете ли вы Active Directory/встроенную аутентификацию Windows? Если это так, страница приобретает определенные атрибуты (на стороне сервера) и работает как посещающий пользователь, а не как веб-сервер. Я не думал, что то же самое применяется на стороне клиента, но должен признать, что никогда не проверял это. В каком браузере проблемы? IE? А с какой версией офиса/вьюшки мы имеем дело?   -  person Basic    schedule 22.09.2012


Ответы (1)


{Не ответ, но слишком длинный для комментария}

Я не знаю, что конкретно вызывает проблему, но, вероятно, браузер работает с немного измененными разрешениями при запуске VS и, следовательно, не имеет необходимых привилегий для запуска Outlook.

Вы можете отследить проблему с помощью такого инструмента, как ProcMon от SysInternals (сейчас Microsoft). На самом деле, я рекомендую вам получить полный набор инструментов, так как есть несколько очень удобных. .

В любом случае запустите procmon и добавьте фильтр, чтобы вы видели активность только в Outlook. Будет много записей, но в какой-то момент, возможно, непосредственно перед отображением сообщения об ошибке, вы должны увидеть некоторые записи, помеченные FAILED, и некоторые сведения о разрешениях. Это, по крайней мере, позволит вам определить, к чему конкретно Outlook пытался получить доступ, когда столкнулся с проблемой разрешений, а также может позволить вам определить, являются ли используемые учетные данные теми, которые вы ожидаете (ваши).

person Basic    schedule 21.09.2012
comment
Я запустил инструмент, и ни одна запись не вернулась со статусом FAILED. Несколько записей вернулись как NO NAME FOUND при попадании в реестр. В остальном все они были успешными. - person Eric R.; 24.09.2012
comment
Вы можете захотеть исследовать No name found, но они не особенно необычны — довольно часто приложение будет пытаться прочитать вместо проверки, существует ли ключ, поскольку это одна операция, а не две. Это означает, что нет причины сбоя безопасности на уровне ОС (нет проблем с доступом к регистрационной/файловой системе). Похоже, что внутри Outlook происходит какая-то логическая проверка, которая дает сбой, и это вызывает сбой разрешений. Боюсь, я не знаю, почему/что это может быть. Вы можете попробовать подключить отладчик, но без источника это будет кошмар. - person Basic; 24.09.2012