【问题标题】:C# WebApplication with WebBrowser带有 Web 浏览器的 C# Web 应用程序
【发布时间】:2016-02-04 11:23:43
【问题描述】:

我正在尝试在 ASP.Net Web 应用程序中运行 Javascript 函数,并且我正在使用 WebBrowser 来执行此操作:

JavaScriptSerializer js = new JavaScriptSerializer();
Dictionary<string, object> mainDic = (Dictionary<string, object>)js.DeserializeObject(fulljsFile);

String base64Content = (String)mainDic["html"];
String html = Base64.Base64Decode(base64Content);

Thread thread = new Thread(delegate()
{
    WebBrowser browser = new WebBrowser();

    browser.Navigate("about:blank");
    if (browser.Document != null)
    {
        browser.Document.Write(string.Empty);
    }

    browser.Document.Write(html);

    string name = (string)browser.Document.InvokeScript("extract");
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();

这是html var:

<html><script>
function extract()
{
    return 'Steve';
};
    </script>
</html>

问题是name 是空的,而不是Steve

当我在我的 IIS 服务器上本地运行它时,它正在工作,但是当我将它上传到我的服务器时,它无法将某些内容返回到 name var。

【问题讨论】:

  • @CodeCaster 我需要在代码中运行 JavaScript 函数
  • 有更好的方法可以做到这一点,例如Embedding JavaScript engine into .NET。无论如何非复制,这段代码不会“返回”任何东西。请显示您的实际代码以及您使用的异常处理。我很确定 WinForms 的 WebBrowser 不喜欢在服务器上作为服务运行。

标签: c# .net asp.net-mvc iis web-applications


【解决方案1】:

我想知道在您尝试运行脚本时文档是否已加载到浏览器中。 那么,您能否尝试处理导航完成事件并从那里运行脚本。

【讨论】:

  • 当我尝试获取 WebBrowser 源代码时,我得到了它
猜你喜欢
  • 2015-06-08
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多