C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: サーバーでの重い処理の経過をリアルタイムに通知する.net


(過去ログ 138 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■81017 / inTopicNo.1)  サーバーでの重い処理の経過をリアルタイムに通知する.net
  
□投稿者/ sasa (1回)-(2016/08/25(Thu) 10:25:20)
sasa さんの Web サイト

分類:[.NET 全般] 

下記URLと同じ処理を .Net Framework 4* (Vb.net or C#) IIS Expressで行いたいのですが、

参考サイト等 ご存知の方いらっしゃいましたら 教えてください。
http://blog.mudatobunka.org/entry/2015/08/30/195802

こんな感じの処理(イメージ)です ---------------------------------
Public Class ValuesController
Inherits ApiController

' POST api/values/
Public Function PostValue(<FromBody> ByVal value As String) As String
string key = "このキーでGet リクエストしてね"
call 重い処理をバックグランドで開始
return key
End Function

' GET api/values/5
Public Function GetValue(ByVal key As String) As String
return 重い処理の結果(key)
End Function

End Class
引用返信 編集キー/
■81022 / inTopicNo.2)  Re[1]: サーバーでの重い処理の経過をリアルタイムに通知する.net
□投稿者/ WebSurfer (1013回)-(2016/08/25(Thu) 12:39:51)
No81017 (sasa さん) に返信

> サーバーでの重い処理の経過をリアルタイムに通知する

ASP.NET Web アプリで、クライアントが「サーバーでの重い処理の経過」を要求し
た場合、クライアントのブラウザ上に「現在32%完了...」のように進捗状況を表示
したいという話ですよね。

ASP.NET Web Forms アプリの場合、やってできないことはないというレベルの話で
すが、以下の記事に書いてあるようにして進捗状況を示すことはできます。(記事
にも書いてありますがお勧めできるかはまた別の話)

進捗状況の表示
http://surferonwww.info/BlogEngine/post/2015/12/28/show-progress-of-task-being-performed-at-server-side.aspx

ApiController が出てくるということは、ASP.NET Web API アプリで行うというこ
とが必須要件ですか?
引用返信 編集キー/
■81023 / inTopicNo.3)  Re[2]: サーバーでの重い処理の経過をリアルタイムに通知する.net
□投稿者/ sasa (2回)-(2016/08/25(Thu) 12:57:43)
sasa さんの Web サイト
No81022 (WebSurfer さん) に返信

回答ありがとうございます。


> ASP.NET Web アプリで、クライアントが「サーバーでの重い処理の経過」を要求し
> た場合、クライアントのブラウザ上に「現在32%完了...」のように進捗状況を表示
> したいという話ですよね。
>
> ASP.NET Web Forms アプリの場合、やってできないことはないというレベルの話で
> すが、以下の記事に書いてあるようにして進捗状況を示すことはできます。(記事
> にも書いてありますがお勧めできるかはまた別の話)
>
> 進捗状況の表示
> http://surferonwww.info/BlogEngine/post/2015/12/28/show-progress-of-task-being-performed-at-server-side.aspx

→ ありがとうございます
  早速、試させていただき ご報告いたします


> ApiController が出てくるということは、ASP.NET Web API アプリで行うというこ
> とが必須要件ですか?

→ はい ASP.NET Web API のサーバー側の話で
  Web Forms ではなく マルチアプリに対応したい
 (excel vba などの soap HttpRequest に対応)
 ので、Web API が よいと思っています。

引用返信 編集キー/
■81026 / inTopicNo.4)  Re[2]: サーバーでの重い処理の経過をリアルタイムに通知する.net
□投稿者/ sasa (4回)-(2016/08/25(Thu) 15:46:27)
sasa さんの Web サイト
No81022 (WebSurfer さん) に返信
> ■No81017 (sasa さん) に返信
>
>>サーバーでの重い処理の経過をリアルタイムに通知する
>
> ASP.NET Web アプリで、クライアントが「サーバーでの重い処理の経過」を要求し
> た場合、クライアントのブラウザ上に「現在32%完了...」のように進捗状況を表示
> したいという話ですよね。
>
> ASP.NET Web Forms アプリの場合、やってできないことはないというレベルの話で
> すが、以下の記事に書いてあるようにして進捗状況を示すことはできます。(記事
> にも書いてありますがお勧めできるかはまた別の話)
>
> 進捗状況の表示
> http://surferonwww.info/BlogEngine/post/2015/12/28/show-progress-of-task-being-performed-at-server-side.aspx
>
> ApiController が出てくるということは、ASP.NET Web API アプリで行うというこ
> とが必須要件ですか?

→ これチャレンジしてます
  http://takepara.blogspot.jp/2012/04/web-apisession.html

  あまり 推奨できないようです

  HttpWebRoute が定義されていない?でハマってます
引用返信 編集キー/
■81033 / inTopicNo.5)  Re[3]: サーバーでの重い処理の経過をリアルタイムに通知する.net
□投稿者/ sasa (6回)-(2016/08/25(Thu) 17:17:29)
sasa さんの Web サイト
■下記の操作で 出来ました
  ありがとうございました。

@Global.asax に下記の コードを追加
  http://stackoverflow.com/questions/11478244/asp-net-web-api-session-or-something
 
Public Class WebApiApplication

Public Overrides Sub Init()
AddHandler Me.PostAuthenticateRequest, AddressOf MvcApplication_PostAuthenticateRequest
MyBase.Init()
End Sub

Private Sub MvcApplication_PostAuthenticateRequest(sender As Object, e As EventArgs)
System.Web.HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required)
End Sub
End Class



Public Class ValuesController
Inherits ApiController

A' POST api/values/
Public Function PostValue(<FromBody> ByVal value As String) As String

'重い処理を行うクラスを初期化して Session に保持
Dim task = New 重い処理を行うクラス()
Dim string key = "このキーでGet リクエストしてね"

HttpContext.Current.Session(key) = task

'別スレッドで処理を実行
Dim newThread As Thread = New Thread(New ThreadStart(AddressOf 重い処理を行うクラス.Start))
newThread.Start()

Return key
End Function

B' GET api/values/key
Public Function GetValue(ByVal key As String) As String

Dim task As 重い処理を行うクラス = HttpContext.Current.Session(key)
Dim result = task.重い処理の結果()

HttpContext.Current.Session(key).remove()

End Function
End Class
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -