首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用sql过程在asp.net中找到客户端机器ip吗?

我可以使用sql过程在asp.net中找到客户端机器ip吗?
EN

Stack Overflow用户
提问于 2015-01-23 10:16:11
回答 3查看 198关注 0票数 0
代码语言:javascript
复制
SELECT CLIENT_NET_ADDRESS AS 'ClientIPAddress'     
 FROM SYS.DM_EXEC_CONNECTIONS WHERE SESSION_ID = @@SPID

我在插入过程中使用上述值,但客户端系统ip未保存。请帮助我。

代码语言:javascript
复制
ALTER procedure [dbo].[proInsertLogDetails]
@action nvarchar(50),
@table_id nvarchar(500),
@created_by nvarchar(500)
as
begin
declare @ip varchar(100)
SELECT @ip=CLIENT_NET_ADDRESS   FROM SYS.DM_EXEC_CONNECTIONS WHERE SESSION_ID = @@SPID
insert into user_log
(
[action],
created_by,
ip_address,
table_id
)
values  
(
@action,
@created_by,

@ip
,
@table_id
)

我正在使用上述存储程序。

EN

回答 3

Stack Overflow用户

发布于 2015-01-23 10:51:48

您的问题被标记为ASP.net,但您正在使用到Server的连接来确定客户端的IP地址。我想你指的是网络浏览器作为客户端?在这种情况下,因为浏览器从来不让连接到Server的连接达到最好的效果,所以您可以希望它提供连接到Server的Web服务的地址。

票数 0
EN

Stack Overflow用户

发布于 2015-01-23 10:55:45

您可以在asp.net中获取客户端机器ip地址/主机名。

代码语言:javascript
复制
String sName = System.Net.Dns.GetHostEntry
                (HttpContext.Current.Request.UserHostName).HostName

将此值作为参数发送到存储过程proInsertLogDetails

代码语言:javascript
复制
ALTER procedure [dbo].[proInsertLogDetails]
@action nvarchar(50),
@table_id nvarchar(500),
@created_by nvarchar(500),
@ClientName varchar(100)
as
票数 0
EN

Stack Overflow用户

发布于 2015-01-23 11:04:36

您可以创建一个函数

代码语言:javascript
复制
CREATE FUNCTION [dbo].[GetIp] ()
    RETURNS VARCHAR(255)
    AS
    BEGIN
        DECLARE @ip VARCHAR(255);

        SELECT @ip = client_net_address
        FROM sys.dm_exec_connections
        WHERE Session_id = @@SPID;

        RETURN @ip;
END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28107576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档