【问题标题】:Communication from a C# application to an ASP.NET application从 C# 应用程序到 ASP.NET 应用程序的通信
【发布时间】:2014-10-01 15:01:27
【问题描述】:

我正在为 ASP.NET 应用程序创建一个宿主应用程序 (C#)。我想要完成的是让 ASP 应用程序从 C# 应用程序获取事件。有了这些数据,我需要从 ASP 客户端调用带有 HTTP 上下文/会话的服务器端函数。可以只使用查询字符串刷新页面。

我目前有两种方法:

1) C# WCF 与 net.tcp 到 ASP 问题:直接联系服务器端层时,会话(HTTP 上下文)为 NULL。我可以更新静态变量等,但我无法告诉客户端使用查询字符串刷新/导航(因此我可以在下一个 page_load 获取上下文)。

2) C# WebBrowser.Document.InvokeScript(myJavascript())

问题:当我到达 ASP 应用程序的服务器端时,我无法访问静态变量(由于某种原因它们为 NULL)。我试过使用 Session["MyVariable"] = "test";在 page_load 中,调用 javascript 函数并检查会话变量,但这是 NULL。

任何帮助或指向正确方向的指示都会非常有帮助。如果需要,我会附上一些代码示例。

谢谢!

编辑 1: 在我的 WebBrowser 中,我只能看到 Default.aspx 页面,因此在从问题 #2 创建 javascript 函数时,我需要在此文件中创建它。如果没有,我将无法调用它。

【问题讨论】:

    标签: c# javascript asp.net wcf


    【解决方案1】:

    对于问题 1,我相信您正在尝试从 WCF 服务“实例化” ASP 应用程序类。就像自己加载DLL或以其他方式加载一样。不要这样做——它总是使静态为空,会话为空。您需要在此处反转控件。创建一个回调,这个东西可以像魅力一样工作。

    您为什么不看一下 SSE(服务器发送事件)之类的选项?可能这可以解决您在第 2 点遇到的问题。

    如果可能,请发布您的代码。

    【讨论】:

    • 嗨!没有加载 DDL,我只是使用 NetTcpBinding 连接到 net.tcp 接口。我可以用这个来达到静态,设置静态等等,所以它不应该是一个问题。问题 #1 是让客户端使用给定的查询字符串导航到正确的页面,我在收到事件时将它们放在一起。我正在使用 CallbackChannel。
    【解决方案2】:

    我想知道你是否不能在这里使用 SignalR。

    假设它可以安装在您的解决方案中。您的 C# 应用可以通过 SignalR 或 Web API 请求将数据发送回您的服务器。

    然后,您的服务器通过 SignalR 向客户端会话发送警报,提示其刷新。

    【讨论】:

      【解决方案3】:

      对于问题 1,您是否尝试过启用 asp.net 兼容性?

      在 ASP.NET 兼容模式下运行的服务完全参与 ASP.NET 应用程序管道,并且可以利用 ASP.NET 功能,例如文件/URL 授权、会话状态和 HttpContext 类。

      这里有几个链接:

      WCF Services and ASP.NET

      ASP.NET Compatibility

      您可以使用AspNetCompatibilityRequirementsMode.Required 装饰您的服务实现,以明确建议WCF 这些实现必须要求在web.config 中启用asp.net 兼容性,否则您可以让AspNetCompatibilityRequirementsMode.Allowed 不强制执行它,但如果启用了 asp.net comp,仍然可以读取 HttpContext。

      关于服务实现:

      [AspNetCompatibilityRequirements(RequirementsMode =
                         AspNetCompatibilityRequirementsMode.Required)]
      

      system.serviceModel下:

      <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
      

      【讨论】:

      • 我不知道这件事。我马上去看看。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多