无法在VB.net子文件夹中维护会话

时间:2019-06-17 14:07:27

标签: c# .net vb.net

我正在使用旧的基于VB的ASP表单网站。我正在将其部分转换为C#。为此,我在App_Code中创建了一个子文件夹,并将其注册到web.config中。 我有一组由桌面应用程序使用的VB Web服务,我在子文件夹中将它们转换为C#,但它们似乎无法保持会话的持久性(它们会继续创建新的会话)。

  1. 作为测试,我使用简单的“ ping”方法在App_Code中创建了一个新的VB类,并跟踪了会话ID以查看是否创建了新的VB类。从桌面应用程序调用时,会话可以正常持续。
  2. 与子文件夹(在C#中)进行的测试相同,会话始终是新的(不持久)
  3. 从VB测试类中调用子文件夹类ping方法也会导致会话持久性丢失。

因此从桌面应用程序调用,App_Code中的VB测试保持会话,子文件夹中的C#测试不保持会话,App_Code中的VB测试通过会话的子文件夹中的C#测试不保持会话。 通过网站本身进行调用,会话在任何情况下都将保留并持续。

即使在远程相似的情况下,也无法在线找到太多有关案件的信息。

当桌面应用调用App_code子文件夹中的Web服务时,如何保持会话持久?

App_Code中的VB类声明:

<WebService(Namespace:="xxxxxx")>
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<System.Web.Script.Services.ScriptService()>
Public Class VBTest
    Inherits System.Web.Services.WebService

VBTest ping方法:

<WebMethod(EnableSession:=True)> <ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)> Public Function Ping(ByVal request As String) As String
Session.SessionID ' this id is the same between calls coming from a desktop app

App_Code子文件夹中的C#类声明:

[WebService(Namespace = "xxxxx")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]

public class CTest : System.Web.Services.WebService

及其“ ping”方法:

[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void Ping(String request = null)
Session.SessionID // this id is different after each call from a desktop app
// how to keep this id the same? (make it persist)

0 个答案:

没有答案