私のアプリケーションは_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.
_
私の試み
SSRSレポートは_local server
_に展開されます。 SSRSレポートソリューションのデータソースに資格情報が適切に設定されています。
Web.configにタグを追加しようとしました_<identity impersonate="true" userName="Domain\username" password="Password" />
_
IReportServerCredentials reportCredentials = new ReportServerCredentials("MyUserName", "MyPassword", "ServerName");
を追加してみました
Visual Studioを_'Run as Administrator'
_として実行しました。
このリンクに記載されている解決策を試しました RegEditを使用してキーを作成する
Update次の解決策も試しましたが、同じ結果になりました: SSRSでの不正なエラー
上記の解決策はどれも機能しませんでしたが、同じ解決策を他のマシンで実行すると、解決策はうまく機能し、エラーは表示されません。自分のマシンからソリューションを実行した場合にのみ、エラー_The request failed with HTTP status 401: Unauthorized.
_が発生します。
これを試して
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);
}
}
私も同じエラーが発生します、
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();
}
これは私のために働いた!
リクエストはhttpステータス401が無許可で失敗しました。 ssrs 2008
web.configからaddkey = "RS_UName" value = "rajiv-pc" ----正しくありません
上記の値を、rajiv-pcのようなSQLサーバー名ではなくシステム名(rajiv)に置き換えます
sQLサーバー名ではなくシステム名が常にあります。
web.configからkey = "RS_UName" value = "rajiv"を追加---正解
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>
`
パブリックトークンは同じである必要があります。そうでない場合、別のエラーが発生します。
私も同じ問題を抱えていました。すべてが正常に機能し、その後突然、デバッグモード(localhost)のレポートではなく、reportvieweriframeで401を受け取りました。ライブサイトで実行するための設定をいじっていたので、何か間違ったことをしたと思いました...
いくつかのことを試した後、再起動して何を推測することにしましたか?ドメインパスワードの有効期限が切れたため、認証に失敗しました!!!愚かな愚かな愚かな私!
人々が同じ愚かな状況に遭遇し、彼らが何を間違えたかを理解する貴重な時間を失う場合に備えて、ここに私の解決策を追加すると思いました...