0

髪を引っ張っています。既存のコードが次のようなプロジェクトを引き継ぎました。


'Try
        Dim rs As New webreportexecution2005.ReportExecutionService()

        rs.Credentials = New NetworkCredential("auser", "******", "")
        'rs.Url = "http://companyweb.com/reportserver/ReportExecution2005.asmx"

        ReportName = Replace(ReportName, "BuildingTabStackingFloorSumNewCust7", "BuildingTabStackingFloorSumNewCust3")

        ' Render arguments
        Dim result As Byte() = Nothing
        Dim reportPath As String = "/CompanyFolder/" + ReportName
        Dim format As String = "PDF"
        Dim historyID As String = Nothing
        Dim devInfo As String = "False"

        Dim intNumParams As Integer = 0
        If Not FloorIDs = "" Then

            intNumParams = 1
        End If

        If ReportName.EndsWith("NoBreaks") And FloorIDs = "" Then
            intNumParams = intNumParams + 1
        End If


        Dim param(intNumParams) As webreportexecution2005.ParameterValue
        param(0) = New webreportexecution2005.ParameterValue

        param(0).Name = ParameterName
        param(0).Value = ParameterValue

        'if combined building and floor report, need to add the floor ids
        If Not FloorIDs = "" Then
            param(1) = New webreportexecution2005.ParameterValue

            param(1).Name = "FloorIDs"
            param(1).Value = FloorIDs
        End If

        If ReportName.EndsWith("NoBreaks") And FloorIDs = "" Then
            param(intNumParams) = New webreportexecution2005.ParameterValue

            param(intNumParams).Name = "PropertyName"
            param(intNumParams).Value = Session("PropertyName")

        End If

        Dim credentials As DataSourceCredentials() = Nothing
        Dim showHideToggle As String = Nothing
        Dim encoding As String = ""
        Dim mimeType As String = ""
        Dim warnings As webreportexecution2005.Warning() = Nothing
        Dim reportHistoryParameters As ParameterValue() = Nothing
        Dim streamIDs As String() = Nothing

        Dim execInfo As New webreportexecution2005.ExecutionInfo
        Dim execHeader As New webreportexecution2005.ExecutionHeader()
        Dim SessionId As String
        Dim extension As String = ""

        rs.ExecutionHeaderValue = execHeader
        rs.Timeout = 10000000

        execInfo = rs.LoadReport(reportPath, historyID)

        rs.SetExecutionParameters(param, "en-us")

        SessionId = rs.ExecutionHeaderValue.ExecutionID

        result = rs.Render(format, devInfo, extension, _
           encoding, mimeType, warnings, streamIDs)

        Response.ClearContent()
        Response.ClearHeaders()
        Response.Clear()
        Response.AppendHeader("content-length", result.Length)
        Response.ContentType = "application/pdf"
        Response.BinaryWrite(result)
        Response.End()
        Response.Flush()
        Response.Close()

私のローカル マシンでは、問題なく動作しているようです。ポップアップが読み込まれ、ページが PDF レポートを正しく生成します。コードをサーバーにリリースすると、うまくいきません。代わりに、私はこれを受け取ります:

接続先が一定時間後に適切に応答しなかったために接続の試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました 74.205.99.209:80


ソース エラー:


456 行目:
457 行目: execInfo = rs.LoadReport(reportPath, historyID)

目前の問題は設定の問題だと思うので、詳細は次のとおりです。

Windows サーバー 2008

MSSQL 2008

SSRS 2008

IIS 7、ASP.Net 4.0

アプリケーション プール 4.0、統合、ユーザー = NetworkService

4

1 に答える 1

0

何よりも、ファイアウォールが SSRS ホ​​ストへの接続を許可していないと思います。資格情報を明示的に提供しているのに取得できない場合は、サービス自体への接続に関連する問題である可能性があります。VB.NET コードに飛び込む前に、サーバーに直接アクセスして、次の場所にアクセスしようとします。

http://companyweb.com/reportserver

デフォルトの管理者としてアクセスできる場合は、コードでそのアカウントを使用してみてください (すでに使用されているかどうかはわかりません)。過去にもSSRSを使用してリモートでコードに接続する際に問題があったことは知っていますが、ほとんどの場合、ユーザーがここでは許可を持っているがそこには許可していない、またはこれの一部ではあるがその一部ではないという問題でした。また、サーバーが Windows ファイアウォールで特に開かれていない場合、デフォルトでポート 80 をブロックすることがあるため、デフォルトである 80 以外のポートでサービスをホストすることもできます。次に、サーバーにアクセスしてファイアウォールを確認します。

SSRS が 80 以外のポートを使用するように明示的に設定することもよくあります。

于 2013-06-14T22:42:23.400 に答える