Я пытаюсь выполнить отчет SSRS в .NET Core.Аутентификация в ReportExecution2005.asmx в .NET Core
Поскольку .NET Core не позволяет добавлять ссылки на службы, вы должны использовать подключенную службу WCF для добавления ссылки на WSDL, чтобы он мог генерировать совместимый с .NET Core код. Это то, что я сделал для ReportExecution2005.asmx (SQL Server 2016, если это имеет значение).
Я попытался с помощью следующих для проверки подлинности службы:
var rsExec = new ReportExecutionServiceSoapClient(ReportExecutionServiceSoapClient.EndpointConfiguration.ReportExecutionServiceSoap,
new EndpointAddress("http://server/ReportServer/ReportExecution2005.asmx"))
{
ClientCredentials =
{
Windows =
{
AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation,
ClientCredential = new NetworkCredential("username", "password")
}
}
};
попытался также настройки Имя объекта вместо объекта Windows, но в любом случае результатом является следующая ошибка:
MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'NTLM'.
Глядя на Fiddler, код не передает учетные данные.
Это код, который получил генерироваться от WSDL-
public ReportExecutionServiceSoapClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress)
: base(ReportExecutionServiceSoapClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress)
{
this.Endpoint.Name = endpointConfiguration.ToString();
ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
}
static partial void ConfigureEndpoint(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials);
Я могу ошибаться, но это не вызов метода частного ConfigureEndpoint с возражает ClientCredentials перед ClientCredentials объекта даже было установлено?
Я не вижу другого способа настройки ClientCredentials или вызова ConfigureEndpoint, так как именно вы должны аутентифицироваться? Другие конструкторы - это в основном одно и то же, кроме одного, которое берет в Binding вместо EndpointConfiguration. Есть идеи?
Кроме того, я знаю, что я могу просто поставить это в .NET Framework библиотеки и ссылаться на него, но я хотел бы попробовать заставить его работать только с использованием .NET Core. – Brandon
Как настроена ваша модель безопасности? Используете ли вы локальный пользователь в экземпляре ssrs для запроса ssrs? Если это так, у этого пользователя есть разрешение на это? –
Другое дело - проверить конфигурацию безопасности транспорта wfc. –