none
网站中在一个WCF服务中调用另外一个网站的WCF服务出现的问题 RRS feed

  • 问题

  • 网站A通过JQuery调用网站A的WCF服务Service1的fun1,而Service1.fun1调用网站B的WCF服务Services2的Fun2,出现中也加入了:Internal Server Error。

    vs2010自动产生的Reference.cs已经加入了

    [WebInvoke(BodyStyle= WebMessageBodyStyle.WrappedRequest)],但是在asp中调用正常,在wcf中调用就失败了。

    在asp中的调用【图片还发不了】

    在wcf中调用【图片还发不了】

    2013年12月24日 8:38

全部回复

  • 网站A通过JQuery调用网站A的WCF服务Service1的fun1,而Service1.fun1调用网站B的WCF服务Services2的Fun2,出现中也加入了:Internal Server Error。

    vs2010自动产生的Reference.cs已经加入了

    [WebInvoke(BodyStyle= WebMessageBodyStyle.WrappedRequest)],但是在asp中调用正常,在wcf中调用就失败了。

    在asp中的调用【图片还发不了】

    在wcf中调用【图片还发不了】

    上的函数:       

    [OperationContract]
            public bool Test(int id,int value)
            {
                return false;
            }

    Reference.cs 的修改

    [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest)]
            [System.ServiceModel.OperationContractAttribute(Action="urn:SalesService/Test", ReplyAction="urn:SalesService/TestResponse")]
            bool Test(int id, int value);

    asp中的调用

            protected void Page_Load(object sender, EventArgs e)
            {
                try
                {
                    Dingball.EB.Web.V2.BkSalesService.SalesServiceClient client = new BkSalesService.SalesServiceClient();
                    bool ret = client.TransferOrderEx(111, 333);
                    bool iret = client.Test(321, 888);
                }
                catch (Exception err)
                {
                    string msg = err.Message;
                }

           }

    Services1中的调用

    [OperationContract]
            [WebInvoke(Method = "POST",
                       BodyStyle = WebMessageBodyStyle.WrappedRequest,
                       RequestFormat = WebMessageFormat.Json,
                       ResponseFormat = WebMessageFormat.Json)]
            public string SubmitSalesOrder()
            {
                string rstr = "";

                string orderId = HttpContext.Current.Request["orderId"];
                string sid = HttpContext.Current.Request["sid"];
                Md5Hasher md5Hasher = new Md5Hasher();
                User user = HttpContext.Current.Session["User"] as User;
                if (user == null || md5Hasher.Decode(sid, "dingballXg") != user.Id.ToString())
                {
                    return "{\"results\":-1}";
                }
                bool isVisitor = (user.Id == 0) ? true : false;
                int supplierId = Convert.ToInt32(HttpContext.Current.Session["SupplyId"]);
                if (supplierId == 0)
                {
                    return "{\"results\":-1}";
                }
                else
                {
                    int oId = Convert.ToInt32(orderId);               
                    try
                    {
                        SalesServiceClient client = new SalesServiceClient();
                        bool bb = client.Test(121, 1231);
                        bool bRet = client.TransferOrderEx(oId, supplierId);                   
                        if (bRet)
                        {
                            rstr = "{\"results\":1,\"data\":\"提交成功\"}";
                        }
                        else
                        {
                            rstr = "{\"results\":0,\"data\":\"单据结转失败,请联系批发商。\"}";

                        }
                    }
                    catch (Exception err)
                    {
                        string msg = err.Message;
                        rstr = "{\"results\":0,\"data\":\"单据结转失败,请联系批发商。\"}";
                    }
                }

                return rstr;
            }


    调用中,执行client.Test(121, 1231);抛出异常
    • 已编辑 szDolphin 2013年12月24日 8:45 未表达清楚
    2013年12月24日 8:44
  • The following configuration taken from MSDN can be applied to enable tracing on your WCF service.

    <configuration>
      <system.diagnostics>
        <sources>
          <source name="System.ServiceModel"
                  switchValue="Information, ActivityTracing"
                  propagateActivity="true" >
            <listeners>
                 <add name="xml"/>
            </listeners>
          </source>
          <source name="System.ServiceModel.MessageLogging">
            <listeners>
                <add name="xml"/>
            </listeners>
          </source>
          <source name="myUserTraceSource"
                  switchValue="Information, ActivityTracing">
            <listeners>
                <add name="xml"/>
            </listeners>
          </source>
        </sources>
        <sharedListeners>
            <add name="xml"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="Error.svclog" />
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    2014年1月3日 10:27