web-dev-qa-db-ja.com

リクエストはHTTPステータス401で失敗しました:Unauthorized IN SSRS

私のアプリケーションは_Asp.Net MVC3_にあり、_C#_にコード化されています。_SQL Server Business Intelligence Developement Studio_にSSRSソリューションがあります。_Visual Studio 2008_にあります。SSRSレポートをAsp.Net MVC3アプリケーション。私のアプリケーションは数日前に正常に実行されていましたが、突然次のようなエラーが発生しました。

私のエラー:

_The request failed with HTTP status 401: Unauthorized.
_

私の試み

  1. SSRSレポートは_local server_に展開されます。 SSRSレポートソリューションのデータソースに資格情報が適切に設定されています。

  2. Web.configにタグを追加しようとしました_<identity impersonate="true" userName="Domain\username" password="Password" />_

  3. IReportServerCredentials reportCredentials = new ReportServerCredentials("MyUserName", "MyPassword", "ServerName");を追加してみました

  4. Visual Studioを_'Run as Administrator'_として実行しました。

  5. このリンクに記載されている解決策を試しました RegEditを使用してキーを作成する

  6. Update次の解決策も試しましたが、同じ結果になりました: SSRSでの不正なエラー

上記の解決策はどれも機能しませんでしたが、同じ解決策を他のマシンで実行すると、解決策はうまく機能し、エラーは表示されません。自分のマシンからソリューションを実行した場合にのみ、エラー_The request failed with HTTP status 401: Unauthorized._が発生します。

8
Sam M

これを試して

public void GetConnectionOfReportServer()
        {
            try
            {
                NetworkCredential credential = new NetworkCredential("administrator", "password@123", "Domain");
                this.reportViewer1.ServerReport.ReportServerCredentials.NetworkCredentials = credential;

                //select where the report should be generated with the report viewer control or on the report server using the SSRS service.
                this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
                this.reportViewer1.ServerReport.ReportServerUrl = new Uri(@"http://localhost/ReportServer");
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


        }
2
vikky

私も同じエラーが発生します、

The request failed with HTTP status 401: Unauthorized.

私が試したことを共有させてください、そしてそれは今うまくいっています。

public class CustomSSRSCredentials : IReportServerCredentials
    {
        private string _SSRSUserName;
        private string _SSRSPassWord;
        private string _DomainName;

        public CustomSSRSCredentials(string UserName, string PassWord, string DomainName)
        {
            _SSRSUserName = UserName;
            _SSRSPassWord = PassWord;
            _DomainName = DomainName;
        }

        public System.Security.Principal.WindowsIdentity ImpersonationUser
        {
            get { return null; }
        }

        public ICredentials NetworkCredentials
        {
            get { return new NetworkCredential(_SSRSUserName, _SSRSPassWord, _DomainName); }
        }

        public bool GetFormsCredentials(out Cookie authCookie, out string user,
         out string password, out string authority)
        {
            authCookie = null;
            user = password = authority = null;
            return false;
        }
    }

内部page_loadイベント、

if (!Page.IsPostBack)
{
    ReportViewer1.ProcessingMode = ProcessingMode.Remote;
    IReportServerCredentials ssrscredentials = new CustomSSRSCredentials("MyUserName", "MyPassword", "ServerName");
    ServerReport serverReport = ReportViewer1.ServerReport;
    ReportViewer1.ServerReport.ReportServerCredentials = ssrscredentials;
    serverReport.ReportServerUrl = new Uri("ReportPathKey");
    serverReport.ReportPath = "/Reports/MyReport";
    serverReport.Refresh();
}

これは私のために働いた!

2
pedram

リクエストはhttpステータス401が無許可で失敗しました。 ssrs 2008

web.configからaddkey = "RS_UName" value = "rajiv-pc" ----正しくありません

上記の値を、rajiv-pcのようなSQLサーバー名ではなくシステム名(rajiv)に置き換えます

sQLサーバー名ではなくシステム名が常にあります。

web.configからkey = "RS_UName" value = "rajiv"を追加---正解

0
user2959497

curiousguyの答えが私の問題を解決しました。ありがとう!

また、web.configを確認してください。次のものが必要です。

`

<system.web>
<httpHandlers>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
        validate="false" />
    </httpHandlers>
</system.web>
<system.webServer>
<handlers>
      <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd"
       type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, 
          PublicKeyToken=89845dcd8080cc91" />
</handlers>
  </system.webServer>

`

パブリックトークンは同じである必要があります。そうでない場合、別のエラーが発生します。

0
AdrianBG

私も同じ問題を抱えていました。すべてが正常に機能し、その後突然、デバッグモード(localhost)のレポートではなく、reportvieweriframeで401を受け取りました。ライブサイトで実行するための設定をいじっていたので、何か間違ったことをしたと思いました...

いくつかのことを試した後、再起動して何を推測することにしましたか?ドメインパスワードの有効期限が切れたため、認証に失敗しました!!!愚かな愚かな愚かな私!

人々が同じ愚かな状況に遭遇し、彼らが何を間違えたかを理解する貴重な時間を失う場合に備えて、ここに私の解決策を追加すると思いました...

0
Caty Hespel