2

我使用 c# 4.0 版开发了一个 Web 服务(ASMX)。它只会将文件上传到我们的网络服务器。部署 Web 服务后,我使用 .net v4.0 创建了一个 win 表单项目,并在那里创建了我的 Web 服务的代理。之后我测试了文件上传过程,发现它正在工作。当我使用 .net v2.0 创建一个 win 表单应用程序时,问题就开始了,当我在那里创建一个具有相同 Web 服务的代理时,我看到创建的代理没有 Reference.cs 文件。这就是为什么我无法调用该 Web 服务的原因。当我尝试使用 dotnet 2.0 版创建代理时,我无法理解为什么没有创建 Reference.cs 文件。

所以告诉我是否存在特定于版本的问题。我猜出现问题是因为我在 dotnet v4.0 上开发此 Web 服务并在 dotnet v2.0 上创建代理。请解释为什么没有创建 Reference.cs 文件。也指导我如何解决这个问题。

我在这里发布我的网络服务代码。看看,告诉我有什么问题。

 [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class FileUploader : System.Web.Services.WebService
    {

        [WebMethod]
        public string UploadFile(byte[] f, string fileName)
        {
            // the byte array argument contains the content of the file
            // the string argument contains the name and extension
            // of the file passed in the byte array
            string uploadFolder = HttpContext.Current.Request.PhysicalApplicationPath + @"UPS_New\LabelImages\" + fileName;
            try
            {
                // instance a memory stream and pass the
                // byte array to its constructor
                MemoryStream ms = new MemoryStream(f);

                // instance a filestream pointing to the
                // storage folder, use the original file name
                // to name the resulting file
                FileStream fs = new FileStream(uploadFolder, FileMode.Create);

                // write the memory stream containing the original
                // file as a byte array to the filestream
                ms.WriteTo(fs);
                // clean up
                ms.Close();
                fs.Close();
                fs.Dispose();
                // return OK if we made it this far
                return "OK";
            }
            catch (Exception ex)
            {
                // return the error message if the operation fails
                return ex.Message.ToString();
            }

        }

    }

请指导我...我正在寻找建议。谢谢

4

1 回答 1

0

这是version specific issuewhen the client is build below the version of service then service cannot be accessed in the client.为了使这项工作,build the service in 2.0 framework and then do the reference.it 将接受服务 dll,因为它是使用与客户端相同的版本构建的。

在您的情况下,首先在 2.0 中构建服务,然后在您的客户端中使用 2.0 中构建的代理。

于 2013-02-01T13:09:02.150 回答