0

Silverlight cloudapp で、Reportviewer.aspx という Web フォームでホストされている SSRS Reportviewer コントロールを使用する必要があります。これは、SL C# クラスから javascript OpenReportviewer 関数を呼び出すときに、Azure の "127.0.0.1" テスト環境からうまく機能しています。

<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
  function OpenReportViewer(ReportViewerURL, TabHeading, EstId, ShowExtraDetail, ReportTypeID, PreExpandSections) {
        var form = document.createElement('form');
        form.action = ReportViewerURL;   //'http://endorphin.cloudapp.net/Reporting/ReportViewer.aspx';
        form.method = "POST";
        form.target = '_blank'; // this is important to open a new window 

        var tabHeading = document.createElement('input');
        tabHeading.name = 'TabHeading';
        tabHeading.value = TabHeading;
        form.appendChild(tabHeading);

        var estID = document.createElement('input');
        estID.name = 'EstID';
        estID.value = EstId;
        form.appendChild(estID);

        var showExtraDetail = document.createElement('input');
        showExtraDetail.name = 'ShowExtraDetail';
        showExtraDetail.value = ShowExtraDetail;
        form.appendChild(showExtraDetail);

        var reportTypeID = document.createElement('input');
        reportTypeID.name = 'ReportTypeID';
        reportTypeID.value = ReportTypeID;
        form.appendChild(reportTypeID);

        var preExpandSections = document.createElement('input');
        preExpandSections.name = 'PreExpandSections';
        preExpandSections.value = PreExpandSections;
        form.appendChild(preExpandSections);

        document.body.appendChild(form);
        form.submit();
        document.body.removeChild(form);
      } 
    function onSilverlightError(sender, args) {...

ただし、実際の Azure にデプロイしたところ、「Failed to Invoke: OpenReportviewer」と表示されます。

上記の関数が正確に貼り付けられました。

呼び出しコードは次のとおりです。

//**********************************************************************************
public void Invoke3(string tabHeading, int estID, int reportTypeID, bool showExtraDetail, bool preExpandSections)
{
  if (true == HtmlPage.IsPopupWindowAllowed)
  {
    string strBaseWebAddress = App.Current.Host.Source.AbsoluteUri;
    int PositionOfClientBin =
        App.Current.Host.Source.AbsoluteUri.ToLower().IndexOf(@"/clientbin");
    strBaseWebAddress = Strings.Left(strBaseWebAddress, PositionOfClientBin);
    string ReportViewerURL = String.Format(@"{0}/Reporting/ReportViewer.aspx", strBaseWebAddress);

    try
    {
      HtmlPage.Window.Invoke("OpenReportViewer", ReportViewerURL, tabHeading, estID.ToString(),
                            showExtraDetail.ToString(), reportTypeID.ToString(), preExpandSections.ToString());
    }
    catch (Exception ex)
    {
      My.ShowError("Failed to invoke Webform for Report Viewer.", ex);
    }
  }
  else
  {
    MessageBox.Show("You must enable popups to view reports. Safari browser is not supported.",
        "Error", MessageBoxButton.OK);
  }
}
4

1 に答える 1

0

2 つの可能性があります。

  1. ローカル Azure と実際の Azure の違いは、セキュリティ ゾーンである可能性があります。
  2. ローカルの Azure を指すハード コードされたリンクが存在する可能性があります。
于 2012-10-19T20:53:20.830 に答える