Поэтому ни один из перечисленных здесь не работал для меня, но, используя несколько ответов, я получил что-то:
public string GetBaseUrl()
{
var request = HttpContext.Current.Request;
var appUrl = HttpRuntime.AppDomainAppVirtualPath;
if (appUrl != "/")
appUrl = "/" + appUrl;
var baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, appUrl);
return baseUrl;
}
Обновление для ASP.NET Core / MVC 6:
ASP.NET Core
делает этот процесс немного более болезненным, особенно если вы глубоко в своем коде. У вас есть 2 варианта доступа к HttpContext
1) Передайте его с вашего controller
:
var model = new MyClass(HttpContext);
, затем в model
:
private HttpContext currentContext;
public MyClass(HttpContext currentContext)
{
this.currentContext = currentContext;
}
2) Возможно, более чистый способ заключается в том, чтобы вводить его в ваш класс, который начинается с регистрации типов в вашем Startup:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddTransient<MyClass, MyClass>();
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
, после чего он вводится для вас следующим образом:
private HttpContext currentContext;
public MyClass(IHttpContextAccessor httpContextAccessor)
{
currentContext = httpContextAccessor.HttpContext;
}
в любом случае, здесь обновлено для .NET Core
GetBaseUrl()
:
public string GetBaseUrl()
{
var request = currentContext.Request;
var host = request.Host.ToUriComponent();
var pathBase = request.PathBase.ToUriComponent();
return $"{request.Scheme}://{host}{pathBase}";
}
Существует поле заголовка ( http://www.iana.org/assignments/auto-submitted-keywords/auto-submitted-keywords.xhtml ), но, похоже, MS Outlook не устанавливает это (по крайней мере, не Outlook 2003). Я думаю, что вы должны разобрать строку темы.
Стоит отметить, что Exchange должен подавлять сообщения об отсутствии на работе в ответ на сообщения с заголовком Precedence:bulk
или X-Auto-Response-Suppress:OOF
:
http: //blogs.technet. ком / б / обмен / архив / 2006/10/06 / 3395024.aspx
Этот вопрос часто возникает в Google, поэтому я решил добавить важную заметку.
Никогда не используйте X-Auto-Response-Suppress
в своих фильтрах, как предложено в другом ответе.
X-Auto-Response-Suppress
используется Exchange, чтобы сообщать другим серверам не отправлять автоответы в ответ на электронное письмо. Это не значит, что это письмо является автоответчиком.
Мы должны были выучить это трудным путем, надеюсь, вам не придется. Я также написал сообщение в блоге с более подробной информацией: http://www.jitbit.com/maxblog/18-detecting-outlook-autoreplyout-of-office-emails-and-x-auto-response-suppress -header /