1

メソッド Server.MapPath に問題があります。

現在、メソッドを使用してHttpContext.Current.Server.MapPath("MyPath")、ApiController で「MyPath」の物理パスを取得し、メソッドを取得しています。

HttpResponse を返す ApiController で同じメソッドを使用しようとすると、エラーが発生します。

CurrentのメンバーではありませんSystem.Net.Http.HttpContent

Server.MapPathのコンテキストでメソッドを使用するにはどうすればよいHttpResponseMessageですか?

(私はVisual Basicで作業しています)

編集:私はこのように使用しています:

<HttpGet>
Public Function MyFunc() As HttpResponseMessage
    Try
        Dim streamContent = New PushStreamContent(_
                       Function(outputStream, httpContext, transportContent)
         Try
Dim lPath = httpContext.Current.Server.MapPath(MyPath)

        .... some code

                End Try
    End Function)
 Dim lResult = New HttpResponseMessage(HttpStatusCode.OK)
 lResult.Content = streamContent

 Return lResult
    End Try
   End Function
4

1 に答える 1

1

コールバック関数に渡される 2 番目の引数の型はHttpContentです。HttpContextその parameter という名前が付けられているため、ラムダ内に効果的に隠れていますHttpContext。試す:

Dim streamContent = New PushStreamContent(_
    Function(outputStream, content, transportContent) 'Renamed parameter here
         Try
             Dim lPath = HttpContext.Current.Server.MapPath(MyPath)

         '.... some code
         Catch ex As Exception
         Finally
             outputStream.Close()
         End Try
    End Function)

PushStreamContentコンストラクターの定義は次のとおりです。

Public Sub New ( _
    onStreamAvailable As Action(Of Stream, HttpContent, TransportContext) _
)
于 2014-03-03T08:23:16.717 に答える