У меня много сочувствия на ваш вопрос, так как я сам в почти одинаковой позиции. Я ценю то, что говорят многие ответы, и они правильны - в подпрограмме, указывающей указатель , должен быть предоставлен действительный указатель. В моем случае почти невозможно представить, что они могли испортить указатель, но если они управляли , это будет сбой программного обеспечения MY, и ME, который получит вину: - (
Мое требование не в том, что я продолжаю после ошибки сегментации - это было бы опасно - я просто хочу сообщить, что случилось с клиентом, до завершения, чтобы они могли исправить свой код, а не обвинять меня!
Вот как я нашел это (в Windows): http://www.cplusplus.com/reference/clibrary/csignal/signal/
Чтобы дать синопсис:
#include
using namespace std;
void terminate(int param)
/// Function executed if a segmentation fault is encountered during the cast to an instance.
{
cerr << "\nThe function received a corrupted reference - please check the user-supplied dll.\n";
cerr << "Terminating program...\n";
exit(1);
}
...
void MyFunction()
{
void (*previous_sigsegv_function)(int);
previous_sigsegv_function = signal(SIGSEGV, terminate);
<-- insert risky stuff here -->
signal(SIGSEGV, previous_sigsegv_function);
}
Теперь этот появляется , чтобы вести себя так, как я надеюсь (он печатает сообщение об ошибке, а затем завершает программу), - но если кто-то может заметить недостаток, пожалуйста, дайте мне знать!
Чтобы включить контроллеры, вам нужно изменить регистрацию маршрутов, чтобы сообщить им, где искать контроллеры:
routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}",
namespaces: new[] {"[Namespace of the Project that contains your controllers]"},
defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional});
для включения Просмотр вы создаете пользовательский ViewEngine:
public class CustomViewEngine: RazorViewEngine
{
public CustomViewEngine()
{
MasterLocationFormats = new string[]
{
"~/bin/Views/{1}/{0}.cshtml",
"~/bin/Views/{1}/{0}.vbhtml",
"~/bin/Views/Shared/{0}.cshtml",
"~/bin/Views/Shared/{0}.vbhtml"
};
ViewLocationFormats = new string[]
{
"~/bin/Areas/{2}/Views/{1}/{0}.cshtml",
"~/bin/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/bin/Areas/{2}/Views/Shared/{0}.cshtml",
"~/bin/Areas/{2}/Views/Shared/{0}.vbhtml"
};
.
.
.
}
}
protected void Application_Start()
{
ViewEngines.Engines.Add(new CustomViewEngine());
для Более подробную информацию смотрите в реализации RazorViewEngin по умолчанию.
Вот несколько хороших статей:
Хранение контроллеров ASP.NET MVC & amp; Представления в отдельных сборках
ASP.NET MVC: установка контроллеров в отдельную сборку
Как вызывать контроллеры во внешних сборках в ASP Приложение .NET MVC