Web API создан для поддержки модульного тестирования, позволяя вам издеваться над различными объектами контекста. Однако, используя HttpContext.Current
, вы используете код «старого стиля» System.Web
, который использует класс HttpContext
, который делает невозможным модульное тестирование вашего кода.
Чтобы ваш код был единицей вы должны остановить использование HttpContext.Current
. В Отправка данных формы HTML в веб-API ASP.NET: загрузка файлов и многопользовательский MIME вы можете увидеть, как загружать файлы с помощью веб-API. Как ни странно, этот код также использует HttpContext.Current
для доступа к MapPath
, но в Web API вы должны использовать HostingEnvironment.MapPath
, который также работает за пределами IIS.
Не используя HttpContext.Current
, вы можете тестировать ваш контроллер, назначив свойство ControllerContext
контроллера:
var content = new ByteArrayContent( /* bytes in the file */ );
content.Headers.Add("Content-Disposition", "form-data");
var controllerContext = new HttpControllerContext {
Request = new HttpRequestMessage {
Content = new MultipartContent { content }
}
};
var controller = new MyController();
controller.ControllerContext = controllerContext;
Чтобы скрыть всевозможные ссылки в Google Кругах (или изображения), используйте сценарий Greasemonkey / Tampermonkey следующим образом:
// ==UserScript==
// @name _Hide annoying links
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
waitForKeyElements (
"a[href*='earn-google-circles'], img[src*='earn-google-circles']",
hideNode
);
function hideNode (jNode) {
jNode.hide ();
}
Это получает как статические, так и AJAX-загруженные
См. Выбор и активация правильных элементов управления на сайте AJAX для подсказок при выборе селектора jQuery.
Ссылка: