Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通知主机更改_C#_Javascript_Asp.net - Fatal编程技术网

C# 通知主机更改

C# 通知主机更改,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个ASP.NET应用程序和一个托管WebBrowser的C应用程序。ASP.NET应用程序通过C应用程序运行 我需要在点击按钮时通知C应用程序。最好的方法可能是通过Javascript。这看起来并不复杂,因为我可以公开javascript window.external的函数,但我的C应用程序看到的唯一URL是/Default.aspx。所有javascript函数window.external.myfunc。。必须来自此页面 有什么想法吗?我一片空白。我也有点不确定如何从代码背后调用ja

我有一个ASP.NET应用程序和一个托管WebBrowser的C应用程序。ASP.NET应用程序通过C应用程序运行

我需要在点击按钮时通知C应用程序。最好的方法可能是通过Javascript。这看起来并不复杂,因为我可以公开javascript window.external的函数,但我的C应用程序看到的唯一URL是/Default.aspx。所有javascript函数window.external.myfunc。。必须来自此页面

有什么想法吗?我一片空白。我也有点不确定如何从代码背后调用javascript函数。ScriptManager.RegisterClientScriptBlock似乎被大量使用,但能否在一个页面上多次调用它

谢谢

顺便说一下,对于C客户机,我使用WebBrowser.ObjectForScript来编写自定义对象,该对象将从Javscript获取这些window.external函数调用。这是可行的。

带有ObjectForScript和window.external的部件可以正常工作

为了从ASP.NET代码中调用js函数,应该使用js中的ajax调用。为此,有两种方法:

1-创建一个web服务并不断调用它以检查发生的任何事情,例如轮询。这是最简单的方法,可以轻松实现,例如使用jQuery:

然后从回调调用window.external.func到该ajax调用,当然,如果它返回了预期的值。请注意,使用此方法,您将始终有一个延迟,因为客户端应该轮询服务器

2-与服务器建立连接并保持打开状态,然后在服务器准备就绪时从服务器发送数据。对于这个问题,您可以使用类似于signar的东西。这将解决延迟问题,但将保持开放连接,这反过来会带来其他问题

实际上,决定这两种方法之间的主要因素是您是否可以接受延迟。如果平均等待15秒不是问题,请使用轮询时间为30秒的第一种方法。如果您希望它是实时的,请使用第二种方法,但要注意其自身的问题,如长时间运行的连接、signer中缺少会话状态等


我只是想让你看看选择。如果有任何不清楚的地方,请告诉我。

window.external和WebBrowser.ObjectForScripting也是我使用的方式。是的,我的问题是如何从后面的代码调用window.external。即使来自其他内部页面,也必须来自WebBrowser URL中的页面,以查看哪个页面是默认的.aspx。因此,如果我没有弄错的话,从myOtherPage.aspx调用window.external将无法工作。谢谢。我已经测试了一点,我可以看到窗口。外部工作。目前我面临的问题是将Javascript中的值返回给代码,因为这会发送一个C应用程序需要批准或不批准的参数。有什么建议吗?好的。让我们回顾一下整个场景。您希望后台代码在加载页面后将值发送到页面,然后调用window.external对象上的一些方法,从用户处获取一些值,最后将获取的值返回到ASP.NET页面。对的
$.ajax(...);