将控制台应用程序转换为asp.net Web应用程序后,帖子不再是即时的

时间:2011-10-07 14:43:56

标签: c# asp.net xml soap service-reference

我有一个控制台应用程序,它连接到一个服务引用,允许它将SOAP调用发送到服务,该服务在我不拥有或控制的单独程序中更新信息。控制台应用程序运行正常,这里有一些代码只是为了让您了解我正在做什么。

public static void PlaceOrders(wsCHRUtilsSoapClient client)
    {
        //identifying vars for patient/provider (not part of orders)
        string patientID = "1234";
        string csn = "123456789";
        string orderingUser = "98765";
        string authProvider = "98765";
        string departmentID = "123456";
        string projectKey = "eProj-CDS";
        string messages;

        //Create order samples
        Order oOne = CreateOrder("LAB", "CBCD", "1", "yay its friday", null, null, null, null, null, null, null, "4",
            "13", null, null, null, null, null, null, null, ", , , ", null, null, null, null, null, null, null, null, null);

        ArrayOfOrderOrder orders = new ArrayOfOrderOrder();
        orders.Add(oOne);

        client.PlaceOrders(patientID, csn, orderingUser, authProvider, departmentID, projectKey, orders, out messages);
    }

CreateOrder方法只返回一个Order对象,它基本上是一个美化的结构,包含基于字符串的字符串和枚举(由Intellisense建议,所以我知道它们在服务引用中是正确的)。它运作良好,我可以立即查看主机程序上发布的信息。

以下是我的网络应用中的相同方法:

public void PlaceOrders(object sender, EventArgs e)
    {
        wsCHRUtilsSoapClient client = new wsCHRUtilsSoapClient("wsCHRUtilsSoap");
        string messages;
        string orderPatID = this.orderPatID.Text;
        string orderCSN = this.orderCSN.Text;
        string orderOrderingUser = this.orderOrderingUser.Text;
        string orderAuthProvider = this.orderAuthProvider.Text;
        string orderDeptID = this.orderDeptID.Text;
        string orderProjKey = this.orderProjKey.Text;

        string strOrderType = this.orderType.Text;
        string orderCode = this.orderCode.Text;
        string strQuantity = this.quantity.Text;
        string comment = this.comment.Text;
        // ...Like 25 more strings that call their respective ASP textboxes...
        string rflPriority = this.rflPriority.Text;
        string processingInstructions = this.processingInstructions.Text;

        ArrayOfOrderOrder orders = new ArrayOfOrderOrder();
        Order order = CreateOrder(strOrderType, orderCode, strQuantity, comment, strFutureStanding, strStandingCount, standingInterval, 
            expirationDate, strAutoRelease, futureExpectedDate, strFutureApproximate, priority, orderClass, strPatientTaking, route, strDaw, 
            strDispenseQuantity, dispenseUnit, strRefill, sig, modifiers, rflFromProviderID, rflToProviderID, rflToFacility, rflToSpecialty, 
            rflType, rflReason, strRflNumVisits, rflPriority, processingInstructions);

        orders.Add(order);

        client.PlaceOrders(orderPatID, orderCSN, orderOrderingUser, orderAuthProvider, orderDeptID, orderProjKey, orders, out messages);
        client.Close();

网络应用似乎偶尔会更新该计划。我无法弄清楚调试模式或任何重要的工作时间,而不是。当它确实更新时,通常不是即时的。任何人都可以提供任何帮助吗?我对C#和ASP.NET很陌生,所以有可能我错过了正确设置Web应用程序服务参考的一个细微差别(尽管我很确定我对两个应用程序的处理方式都相同)。

我忘记了一些值得一提的东西:控制台应用程序有一个Main,它只是创建一个客户端并运行该服务,然后退出。完成填写表单并单击ASP按钮后,Web应用程序将运行并执行该功能。

2 个答案:

答案 0 :(得分:0)

您应确保web.config包含与该服务的控制台应用程序的app.config相同的配置。

您应该验证是否将方法“PlaceOrders”绑定到某个事件处理程序(按钮单击或其他任何其他内容)

答案 1 :(得分:0)

事实证明,这是服务参考提供商方面的一个问题(虽然他们最初坚持认为不是)。感谢大家输入所有人!