当前位置:编程学习 > C#/ASP.NET >>

利用web service 生产xml文件

我用下面的代码在本机测试能够生成xml文件,返回"Y".但是我把Web service放在服务器上返回的是"N".我的服务器是windows2008,IIS 7.0  请大家帮忙看下是什么原因引起的。

using System;
using System.Data;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Xml;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
using System.Web;
using System.Web.Services;

namespace WebApplication1
{
    /// <summary>
    /// Summary description for WebService2
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]

    public class WebService2 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string XmlEDI(string OrderNumber, string QuotationNo)
        {


            SqlConnection conn = new SqlConnection();

            // conn.ConnectionString = "Provider=SQLOLEDB;Server=(local);database=SchneiderEDI;Integrated Security=SSPI";

            //conn.ConnectionString = "Data Source=10.210.1.21;Initial Catalog=HAG_CWH_21test;Persist Security Info=True;User ID=HAG_CWH;Password=HAG_CWH";
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["EDIconn"].ConnectionString;
            SqlCommand cmd = conn.CreateCommand();
            SqlCommand cmdItem = conn.CreateCommand();
            //string OrderNo = Dts.Variables["OrderNo"].Value.ToString();
            //string OrderNo = "0020239485";
            //string strResult;

            cmd.CommandText = "SELECT Header.BSTKD_E,Header.VBELN,Convert(Varchar(8),Header.BSTDK,112) as BSTDK,Header.KUNNR,Header.KGNNR,Header.QTFLAG FROM V_EDI_HEAD_Upload as Header  where Header.BSTKD_E = '" + OrderNumber + "' and Header.VBELN = '" + QuotationNo + "' for xml auto,ELEMENTS";
            cmdItem.CommandText = "Select ITEM.POSNR,ITEM.VTEXT,ITEM.MATNR,ITEM.KWMENG,Convert(Varchar(8),ITEM.EDATU,112) as EDATU from V_EDI_DETAIL_Upload as ITEM where ITEM.BSTKD_E = '" + OrderNumber + "'and ITEM.VBELN = '" + QuotationNo + "' for xml auto,ELEMENTS";
            conn.Open();
            string sqlstring = "select count(*) from V_EDI_HEAD_Upload where BSTKD_E = '" + OrderNumber + "' and VBELN = '" + QuotationNo + "'";
            SqlCommand command = new SqlCommand(sqlstring, conn);
            //conn.Open();
            //SqlDataReader reader = command.ExecuteReader();
           // int i = Convert.ToInt32(command.ExecuteScalar());
            Int64 i = Convert.ToInt64(command.ExecuteScalar());
            // Int32 i = (Int32) command.ExecuteScalar();
            // command.Dispose();

            if (i > 0)
            {
                try
                {
                    XmlReader xrd = cmd.ExecuteXmlReader();
                    XmlReader xrdItem = cmdItem.ExecuteXmlReader();


                    XmlDocument xmldom = new XmlDocument();

                    XmlDeclaration declaration = xmldom.CreateXmlDeclaration("1.0", "UTF-8", null);

                    xmldom.AppendChild(declaration);

                    XmlElement root = xmldom.CreateElement("ns1:Z_MT_SD_009_SO_CREATION", "http://schneider-distributor.com/");




                    xmldom.AppendChild(root);

                    XmlElement node = null;

                    XmlElement child = null;

                    XmlText text = null;

                    while (xrd.Read())
                    {
                        if (xrd.NodeType == XmlNodeType.Element)
                        {
                            if (xrd.Name.Equals("Header"))
                            {
                                node = xmldom.CreateElement(xrd.Name);

                                root.AppendChild(node);
                            }
                            else
                            {
                                child = xmldom.CreateElement(xrd.Name);

                                node.AppendChild(child);
                            }
                        }

                        if (xrd.NodeType == XmlNodeType.Text)
                        {
                            text = xmldom.CreateTextNode(xrd.Value);

                            child.AppendChild(text);
                        }
                    }

                    //--------------

                    while (xrdItem.Read())
                    {
                        if (xrdItem.NodeType == XmlNodeType.Element)
                        {
                            if (xrdItem.Name.Equals("ITEM"))
                            {
                                node = xmldom.CreateElement(xrdItem.Name);

                                root.AppendChild(node);
                            }
                            else
                            {
                                child = xmldom.CreateElement(xrdItem.Name);

                                node.AppendChild(child);
                            }
                        }

                        if (xrdItem.NodeType == XmlNodeType.Text)
                        {
                            text = xmldom.CreateTextNode(xrdItem.Value);

                            child.AppendChild(text);
                        }
                    }

                    //--------------

                    //string _Service = @"//10.210.1.66";
                    ////string _Path = "z_mi_sd_009_so_creation_file";
                    //string _Path = "upload_backup";
                    //ConnectLan(_Service, "EDI", "p@ssw0rd");

                    //DirectoryInfo _Direct = new DirectoryInfo(_Service + "//" + _Path);
                      DirectoryInfo _Direct = new DirectoryInfo(@"E:\");
                    //string ServerFolder = @"use Z: \\10.210.1.66\z_mi_sd_009_so_creation_file";
                    //System.Diagnostics.Process.Start("net", @ServerFolder);
                    string newfilename = _Direct + "SD009" + "_" + DateTime.Now.Ticks.ToString() + ".xml";
                    //string outputFileName = "@" + newfilename; // ".xml" will be appended.
                    xmldom.Save(newfilename);

                    xrd.Close();

                    conn.Close();

                    conn.Dispose();

                    cmd.Dispose();


                   // CreateSqlLog("成功发送确认报价单: '" + QuotationNo + "'& 采购订单: '" + OrderNumber + "'", newfilename);
                    return "Y";

                }
                catch
                {
                   // CreateSqlLog("发送确认报价单失败: '" + QuotationNo + "'& 采购订单: '" + OrderNumber + "'", "");
                    return "N";
                }

            }


            else
            {
            return null;
            }

        }
    }
}

--------------------编程问答-------------------- 你可以直接调试跟踪一嘛 --------------------编程问答-------------------- 明显是目录没权限啊,iis要对访问的目录赋予权限。。。

另外建议你用 HttpContext.Current.Server.MapPath("~/XXX") 这样把路径放到 WebService 所在目录的子目录里。注意安全啊
补充:.NET技术 ,  Web Services
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,