.NETコアでSSRSレポートを実行しようとしています。.NETコアでReportExecution2005.asmxを認証する
.NET Frameworkではサービス参照を追加できないため、WCF Connected Serviceを使用して.NET Core互換コードを生成できるようにWSDLへの参照を追加する必要があります。これは、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を見ると、コードは資格情報を渡していません。
これは私が誤解されるかもしれないが、このClientCredentialsオブジェクトも設定されていた前のオブジェクトClientCredentialsプライベートメソッドConfigureEndpointを呼び出していません?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);
オフ生成されてしまったコードですか
ClientCredentialsを設定したり、ConfigureEndpointを呼び出す方法が他にないので、どのように認証する必要がありますか?他のコンストラクタは、基本的には同じですが、EndpointConfigurationの代わりにBindingをとるコンストラクタは例外です。何か案は?
はまた、私はちょうど、.NET Frameworkライブラリにこれを入れて、そこからそれを参照することができます知っているが、私は試してみたいのですが.NET Coreを使用して動作させてください。 – Brandon
セキュリティモデルはどのように設定されていますか? ssrsからローカルユーザーを使用して、ssrsから要求していますか?もしそうなら、そのユーザーはその権限を持っていますか? –
別のことは、wfcバインディングのトランスポートセキュリティ設定を確認することです。 –