【发布时间】: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