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

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

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

asmxでUserAgentが取得できない

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

■82882 / inTopicNo.1)  asmxでUserAgentが取得できない
  
□投稿者/ UNO (1回)-(2017/02/17(Fri) 16:10:49)

分類:[.NET 全般] 

VS2015、asmxでWebServiceを作成しています。
表題の通りasmx側でUserAgentが取得できません。
Context.Request.UserAgentではnothingがかえってきました。
aspxであればRequest.UserAgentで取得できるのですが、、、
引用返信 編集キー/
■82884 / inTopicNo.2)  Re[1]: asmxでUserAgentが取得できない
□投稿者/ PANG2 (158回)-(2017/02/17(Fri) 16:37:56)
No82882 (UNO さん) に返信
> VS2015、asmxでWebServiceを作成しています。
> 表題の通りasmx側でUserAgentが取得できません。

クライアントアプリでUserAgentを送信していないとか。

.NETであれば、
https://msdn.microsoft.com/ja-jp/library/system.web.services.protocols.httpwebclientprotocol.useragent(v=vs.110).aspx
引用返信 編集キー/
■82885 / inTopicNo.3)  Re[1]: asmxでUserAgentが取得できない
□投稿者/ WebSurfer (1142回)-(2017/02/17(Fri) 16:41:57)
No82882 (UNO さん) に返信

HttpContext.Current.Request.UserAgent で取得できませんか?

一応下記のコードでデバッグ実行して検証してみましたが、変数 ua に User Agent 
を取得できるのは確認できました。

<%@ WebService Language="C#" Class="_0197_WebServiceSession" %>

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class _0197_WebServiceSession  : System.Web.Services.WebService {

    [WebMethod(Description = "Per session Hit Counter", EnableSession = true)]
    public int SessionHitCounter()
    {
        string ua = HttpContext.Current.Request.UserAgent;  // ←ここ
        if (Session["HitCounter"] == null)
        {
            Session["HitCounter"] = 1;
        }
        else
        {
            Session["HitCounter"] = ((int)Session["HitCounter"]) + 1;
        }
        return ((int)Session["HitCounter"]);
    }    
}

引用返信 編集キー/
■82887 / inTopicNo.4)  Re[2]: asmxでUserAgentが取得できない
□投稿者/ UNO (2回)-(2017/02/17(Fri) 17:16:51)
ありがとうございます。
いただいた情報を基に試行錯誤しています。

PANG2さん、WebSurferさん>
asmxのurlを直接たたくとHttpContext.Current.Request.UserAgentで取得できていました。
別ページtest.aspxからjavascriptでtest.asmxをコールしたときはUserAgentは取得できていました。
別ページtest.aspxからvbコード上でHttpWebRequestを利用しtest.asmxをコールしたときはUserAgentはnothingでした。

PANG2さんのおっしゃる通りクライアントアプリでUserAgentは送信していないことが原因と思います。
もう少し調査してみたいと思います。


引用返信 編集キー/
■82891 / inTopicNo.5)  Re[3]: asmxでUserAgentが取得できない
□投稿者/ WebSurfer (1143回)-(2017/02/17(Fri) 18:17:35)
No82887 (UNO さん) に返信

> 別ページtest.aspxからvbコード上でHttpWebRequestを利用しtest.asmxをコールしたときはUserAgentはnothingでした。

HttpWebRequest では User Agent は送られないのでは?

Fiddler を使って要求ヘッダを調べてみてはいかが? 相手が localhost でなければ HttpWebRequest を使った場合
でもキャプチャできると思います。

Fiddler のお勧め
http://surferonwww.info/BlogEngine/post/2011/05/25/Recommendation-of-Fiddler.aspx
引用返信 編集キー/
■82892 / inTopicNo.6)  Re[3]: asmxでUserAgentが取得できない
□投稿者/ WebSurfer (1144回)-(2017/02/17(Fri) 18:24:34)
No82887 (UNO さん) に返信

【追伸】

Fiddler で 調べてみましたが、やっぱり HttpWebRequest では User Agent は送られてません。

要求ヘッダは下記のとおりです。

POST http://msdntestnew/WebAppProject/carservice.svc/ajaxEndpoint/GetCarsByDoors HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: msdntestnew
Content-Length: 11
Expect: 100-continue

引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ