如何在 ASCX 页面上的 ASP 网站上从 C# 代码执行 url 调用?

Posted

技术标签:

【中文标题】如何在 ASCX 页面上的 ASP 网站上从 C# 代码执行 url 调用?【英文标题】:How can I execute an url call from C# code on a ASP website on a ASCX page? 【发布时间】:2020-08-22 23:03:15 【问题描述】:

我需要调用在客户端上注册的自定义协议(类似于:“custom:signDocs?param1=value?param2=value”)。

我有一个可以通过 javascript 在单击按钮时执行的工作。

但我需要调用 url 来执行我在客户端 pc 上的程序。

该程序用于签署文档并将其发送回服务器,并且在代码中我有一个 15 分钟的计时器,等待文档状态更改为已签名,然后将文档显示给用户。

我也尝试过使用 webrequest:

    //Method that uses the webrequest
    
        System.Net.WebRequest.RegisterPrefix("customProtocolName", new PrototipoIDPTRequestCreator());
        System.Net.WebRequest req = System.Net.WebRequest.Create(protocolUrlWithParams);
        var aux = req.GetResponse();
    

    internal class CustomRequestCreator : System.Net.IWebRequestCreate
    
        public WebRequest Create(Uri uri)
        
            return new CustomWebRequest(uri);
        
    

    class CustomWebRequest: WebRequest
    
        public override Uri RequestUri  get; 
        public CustomWebRequest(Uri uri)
        
            RequestUri = uri;
        
    

但这无济于事,我什至不知道它是正确的道路......

有谁知道实现这个的方法吗?

【问题讨论】:

使用 HTTP 客户端,确保您的任务遵守跨域和身份验证。 我可以通过带有http客户端的url调用自定义协议吗?你能给我一些文档或例子吗? 【参考方案1】:

您可以使用来自System.Net.Http 的 HttpClient,如下例所示。

从测试 api 端点进行简单的 get 调用。

 using (var client = new HttpClient())
            
                client.BaseAddress = new Uri("YOUR_BASE_URL"); //https://localhost:8000
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync("api/test"); //api uri
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
            

注意:更多详情请参考HttpClient Doc

【讨论】:

我没有调用 API,我调用的是自定义/可插拔协议,例如“MyProtocolName:Param1=value1&param2=value2”

以上是关于如何在 ASCX 页面上的 ASP 网站上从 C# 代码执行 url 调用?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 aspx 页面传递到 ascx 模式弹出窗口?

在asp.net网站中动态加载用户控件(ascx)

如何在 reportviewer 控件上从 asp.net 调用打印?

ASP NET 如何将事件从 ASPX 发送到 ASCX

如何使用 ascx 或其他等价物?

如何在 UserControl (.ascx) 中调用 ASP.NET WebMethod