Я не уверен, почему необходимо было бы сделать это, но согласно этот статья от Sun, можно использовать экстерна "C++" в блоке экстерна "C", чтобы определить, что определенные функции в группе функций "C" имеют собственную связь C++.
extern "C" {
void f(); // C linkage
extern "C++" {
void g(); // C++ linkage
extern "C" void h(); // C linkage
void g2(); // C++ linkage
}
extern "C++" void k();// C++ linkage
void m(); // C linkage
}
Мы наконец-то решили проблему. Наши сетевые администраторы отключили двойной прыжок, поэтому, хотя олицетворение правильно подключалось как домен \ jmeyer
, приложение все еще пыталось подключиться к ящику SRS с доменом \ web01 $
. Почему это так? Потому что двойной прыжок - огромная дыра в безопасности. (По крайней мере, мне так сказали. Похоже ли это на то, что вы читали в The Daily WTF ?)
Наше решение состояло в том, чтобы создать общего пользователя домена \ ssrs_report_services
и подключить с этим пользователем со следующими сетевыми учетными данными
public class CustomCredentials : IReportServerCredentials
{
public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority)
{
authCookie = null;
userName = password = authority = null;
return false;
}
public WindowsIdentity ImpersonationUser
{
get { return null; }
}
public ICredentials NetworkCredentials
{
get { return new NetworkCredential("ssrs_report_services", "password", "domain") ; }
}
}
Выше приведен классический пример решения, которое вы можете найти повсюду в Интернете.
"Двойное переключение" разрешено - переключение при аутентификации Kerberos ... (при условии правильной работы!)