ASP.NET ページでクライアントの場所を見つける方法は? 実際に使っSystem.Globalization.RegionInfo.CurrentRegion
たのですが、コントロールパネルに設定を表示しています。では、任意の方法を使用して正確な場所を見つけることはできますか?
9054 次
3 に答える
5
100% の精度が得られるわけではありませんが、hostip.infoを使用できます。
それらは、HTTP 要求を介して渡す IP アドレスの場所を提供する API を提供します。WebClient オブジェクトを使用して API を呼び出し、結果を解析できます。 Scott Hanselmanは、このブログ記事で非常に優れた例を示しています (以下の例は、彼の記事に基づいています)。hostip.info のデータベースは、コミュニティが IP ロケーションを提供するオープン プロジェクトに基づいているため、正確であるという保証はありません。
まず、クライアントの IP アドレスを次のように決定する必要があります。
string ipaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
IP を取得したら、WebClient オブジェクトを作成して API を呼び出すことができます...
API 呼び出しの例:
string r;
using (var w = new WebClient())
{
r = w.DownloadString(String.Format("http://api.hostip.info/?ip={0}&position=true", ipaddress));
}
結果は、次のような XML になります。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<HostipLookupResultSet version="1.0.0" xmlns="http://www.hostip.info/api" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hostip.info/api/hostip-1.0.0.xsd">
<gml:description>This is the Hostip Lookup Service</gml:description>
<gml:name>hostip</gml:name>
<gml:boundedBy>
<gml:Null>inapplicable</gml:Null>
</gml:boundedBy>
<gml:featureMember>
<Hostip>
<gml:name>Sugar Grove, IL</gml:name>
<countryName>UNITED STATES</countryName>
<countryAbbrev>US</countryAbbrev>
<!-- Co-ordinates are available as lng,lat -->
<ipLocation>
<gml:PointProperty>
<gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coordinates>-88.4588,41.7696</gml:coordinates>
</gml:Point>
</gml:PointProperty>
</ipLocation>
</Hostip>
</gml:featureMember>
</HostipLookupResultSet>
于 2009-08-06T11:04:53.407 に答える
3
IPAddressExtensionsは、IPアドレスが存在する国だけが必要な場合は、無料のCodePlexクラスライブラリです。
他のウェブサイトなどへの接続は必要ありません。オープンソースです。
于 2009-09-30T08:59:40.970 に答える