2009-03-22 19 views
18

पर प्रमाण पत्र पास करना मैं सी # में काफी नया हूं और मेरी अंग्रेजी बहुत अच्छी नहीं है - अगर मुझे कोई बिंदु याद आती है तो पहले से खेद है।एसक्यूएल रिपोर्ट सर्वर 2008

मैंने ReportService नियंत्रण के साथ एक एएसपी.NET वेबसाइट बनाने की कोशिश की। जैसा कि आप पहले से ही जानते हैं, एसएसआरएस 2008 अज्ञात लॉगिन की अनुमति नहीं देता है। इसलिए, मैंने एसएसआरएस को प्रमाण पत्र पास करने का प्रयास किया जो मेरे वेब पेज के अंदर संग्रहीत किया जाएगा ताकि उपयोगकर्ता लॉग इन किए बिना रिपोर्ट देख सकें।

मुझे नीचे दिया गया कोड मिला और इसे मेरे WebForm पर रखा गया, लेकिन मैं ' मुझे रिपोर्ट पैरामीटर के साथ समस्या है।

  • अगर कोई रिपोर्ट पैरामीटर के लिए डिफ़ॉल्ट मान रहे हैं, नीचे दिए गए कोड ठीक काम करता है।

  • लेकिन, अगर मैं एक पैरामीटर का मान बदलने की कोशिश, पूरे पृष्ठ
    ताजा है और इससे पहले कि मैं "रिपोर्ट देखें" बटन क्लिक करें, सभी
    मापदंडों डिफ़ॉल्ट या शून्य मान पर रीसेट कर रहे हैं।

पूरे पृष्ठ को रीफ्रेश करने से बचने के तरीके पर कोई सुझाव, या एसएसआरएस में लॉगिन जानकारी पास करने का दूसरा तरीका? आपका अग्रिम रूप से बोहोत धन्यवाद।

using System; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Net; 
using Microsoft.Reporting.WebForms; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ReportViewer1.Width = 800; 
     ReportViewer1.Height = 600; 
     ReportViewer1.ProcessingMode = ProcessingMode.Remote; 
     IReportServerCredentials irsc =new CustomReportCredentials("administrator", "MYpassworw", "domena"); 
     ReportViewer1.ServerReport.ReportServerCredentials = irsc; 
     ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://192.168.0.1/ReportServer/"); 
     ReportViewer1.ServerReport.ReportPath = "/autonarudzba/listanarudzbi"; 
     ReportViewer1.ServerReport.Refresh(); 
    } 
} 

public class CustomReportCredentials : IReportServerCredentials 
{ 
    private string _UserName; 
    private string _PassWord; 
    private string _DomainName; 

    public CustomReportCredentials(string UserName, string PassWord, string DomainName) 
    { 
     _UserName = UserName; 
     _PassWord = PassWord; 
     _DomainName = DomainName; 
    } 

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

    public ICredentials NetworkCredentials 
    { 
     get { return new NetworkCredential(_UserName, _PassWord, _DomainName); } 
    } 

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

क्या आप वाकई एसएसआरएस 2008 से बेनामी ऑथ छोड़ चुके हैं? आपको इसे आईआईएस में कॉन्फ़िगर करने की आवश्यकता हो सकती है? – RobS

+0

से: http://blogs.msdn.com/jameswu/archive/2008/07/15/anonymous-access-in-sql-rs-2008.aspx तो पुराने पुराने अज्ञात प्रमाणीकरण के साथ क्या हुआ आरएस 2005? संक्षिप्त जवाब यह है कि यह अब समर्थित नहीं है। – adopilot

उत्तर

16

मैं वास्तव में SSRS के साथ गड़बड़ नहीं है - लेकिन मेरे ASP.NET टोपी मुझसे कहता है कि आप एक if (!IsPostBack) ब्लॉक में है कि सामान रैप करने के लिए यह पृष्ठ ताज़ा पर चलने से रखने के लिए चाहते हो सकता है। मेरा अनुमान है कि ReportViewer1.ServerReport.Refresh() फिर से डिफ़ॉल्ट मान खींचता है।

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     ReportViewer1.Width = 800; 
     ReportViewer1.Height = 600; 
     ReportViewer1.ProcessingMode = ProcessingMode.Remote; 
     IReportServerCredentials irsc =new CustomReportCredentials("administrator", "MYpassworw", "domena"); 
     ReportViewer1.ServerReport.ReportServerCredentials = irsc; 
     ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://192.168.0.1/ReportServer/"); 
     ReportViewer1.ServerReport.ReportPath = "/autonarudzba/listanarudzbi"; 
     ReportViewer1.ServerReport.Refresh(); 
    } 
} 
+0

मैं लाइन ReportViewer1.ServerReport लाइन काटने की कोशिश करता हूं।ताज़ा करें() लेकिन दुर्भाग्य से एक ही चीज़ फिर से हुई। – adopilot

+0

क्या आपने इसे IsPostBack चेक में लपेट लिया था? –

+3

ReportViewer1.ServerReport.ReportServerCredentials में कोई स्टेटर – dcarneiro

0

मैंने नया फ़ंक्शन बनाया और इसे गुण, ईवेंट, रिपोर्ट व्यूअर पर डिज़ाइन व्यू में उठाया। (चयन आईएनआईटी में)

उसके बाद, पृष्ठ सामान्य रूप से काम करता है और मैं पैरामीटर के लिए मान बदल सकता हूं।

Default.aspx अब लगता है कि:

</head> 
     <body> 
     <form id="form1" runat="server"> 
     <div> 
      <rsweb:ReportViewer ID="ReportViewer1" runat="server" onload="Admir"> 
      </rsweb:ReportViewer> 
     </div> 
     </form> 
    </body> 

और Default.aspx.cs इस

public void Admir(object sender, EventArgs e) 
    { 
     ReportViewer1.Width = 800; 
     ReportViewer1.Height = 600; 
     ReportViewer1.ProcessingMode = ProcessingMode.Remote; 
     IReportServerCredentials irsc = new CustomReportCredentials("administrator", "mypass", "domena"); 
     ReportViewer1.ServerReport.ReportServerCredentials = irsc; 
     ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://192.168.0.1/ReportServer/"); 
     ReportViewer1.ServerReport.ReportPath = "/autonarudzba/listanarudzbi"; 
     ReportViewer1.ServerReport.Refresh(); 

    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
0

आप देने के लिए पेज लोड घटना में निम्न कोड का उपयोग कर सकते की तरह दिखता है पैरामीटर

ReportParameter[] reportParameterCollection = new ReportParameter[1]; //Array size describes the number of paramaters. 
reportParameterCollection[0] = new ReportParameter(); 
reportParameterCollection[0].Name = "ACCMGR"; //Give Your Parameter Name 
reportParameterCollection[0].Values.Add("12"); //Pass Parametrs's value here. 
ReportViewer1.ServerReport.SetParameters(reportParameterCollection); 
ReportViewer1.ServerReport.Refresh(); 

मुझे आशा है कि यह आपके लिए काम करता है

0

मुझे इसके लिए समाधान मिला है। आपको पहले प्रमाण-पत्र सेट करना होगा, फिर आपको रिपोर्टव्यूअर के लिए पैरामीटर सेट करना होगा।

rvCommon.ProcessingMode = ProcessingMode.Remote; 
     rvCommon.ServerReport.ReportServerUrl = new System.Uri("SSRSReportServerURL"); 
     rvCommon.ServerReport.ReportPath = "/Report Parts/CustomerMainReport2" ; 

     Microsoft.Reporting.WebForms.ReportParameter[] RptParameters = new Microsoft.Reporting.WebForms.ReportParameter[1]; 
     rvCommon.ServerReport.ReportServerCredentials = new ReportCredentials("username", "password", ""); 

     RptParameters[0] = new Microsoft.Reporting.WebForms.ReportParameter("CustomerId", "1"); 
     rvCommon.ServerReport.SetParameters(RptParameters); 
     rvCommon.ServerReport.Refresh(); 
संबंधित मुद्दे