.bat错误:' http:'不被识别为内部或外部命令,可操作程序或批处理文件

时间:2016-02-16 20:56:22

标签: batch-file wsdl asmx command-prompt

我尝试使用Visual Studio 2012/2013从现有的ASP网站设置单元测试,更不用说运行了另一个死胡同,但我认为这个问题值得关注#&#从那以后,尽管我已经看过类似的问题了,但我在过去5个小时内尝试过的所有东西都产生了0到Null之间的东西(不是字面意义,如果我得到这样的输出会有所帮助),

我的批处理文件的内容是按照sitepoint.com的5个简单步骤创建和使用.NET Web服务的说明进行的:

wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs
http://localhost/webserv.asmx?wsdl

由于我尝试按照十多年前的文章的步骤进行操作,因此语法和约定可能很容易发生变化。但是,嘿,它能够指导我制作一个有效的 .asmx 页面,所以我试图坚持下去。无论如何,当我在VS2012的Developer Command Prompt上运行makeWS.bat时,我收到错误:

  

' HTTP:'不被认为是内部或外部命令,可操作   程序或批处理文件。

在尝试解决问题时,我的makeWS.bat页面目前看起来像:

wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs
http://localhost:20141/webserv.asmx?wsdl

此外, .asmx 文件如下所示:

<%@ WebService Language="C#" Class="GetInfo" %> 

using System; 
using System.Data; 
using System.Data.SqlClient;
using System.Web.Services; 

[WebService(Description="My Suppliers List Web Service")] 

public class GetInfo : WebService  
{
  [WebMethod(Description="My WebService",BufferResponse=true)] 

  public DataSet ShowSuppliers (string str)  
  { 

    SqlConnection dbConnection = new SqlConnection("server=(local);uid=sa;pwd=;database=Northwind;");  

    SqlDataAdapter objCommand = new SqlDataAdapter("select ContactName, CompanyName, City, Phone from Suppliers  where Country = '" + str + "' order by ContactName asc", dbConnection); 

    DataSet DS = new DataSet();
    objCommand.Fill(DS);
    return DS;
    dbConnection.Close();
    dbConnection = null; 

  } 
}

当我从文件资源管理器中运行Firefox中的ASMX页面时,出现错误:

  

XML解析错误:格式不正确

但是,从VS2013运行 .asmx 页面可以让一切顺利进行。我想也许localhost端口可能起了作用,所以我尝试调整我的批处理文件:

wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs
http://localhost:20141/webserv.asmx?wsdl

我尝试关闭自动运行,我已将http地址添加为系统变量,但没有任何效果。有没有人能够识别我的问题,因为当我的 VS2012开发人员命令提示表示它没有识别 http:时,我真的不相信。到目前为止,还没有在架构级别集成超文本传输​​协议吗?

更新

  
    

&#39; HTTP:&#39;不被识别为内部或外部命令,可操作程序或批处理文件。

  
     

是因为网址与网页不同   wsdl(.exe)   命令(它的参数应该是),并且批处理包含(这是   简化视图)一系列命令,每个命令在不同的行上。   为了克服这一点,将2行合并为1:

wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs http://localhost:20141/webserv.asmx?wsdl
     

或通过 ^ (插入符号)转义 eoln \r\n)字符:

wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs ^
http://localhost:20141/webserv.asmx?wsdl
     

如果一切正常,您应该拥有 bin / wsdlWalkthrough.cs   文件生成。

CristiFati的指示让我超越了最初的障碍。现在新的错误是:

  

错误:处理错误   &#39; http://localhost/webserv.asmx?wsdl'。    - 下载&#39; http://localhost/webserv.asmx?wsdl'时出错。    - 请求失败,HTTP状态为404:Not Found。

这似乎是我可能找到自己的答案,但仍然非常感谢进一步的帮助。

1 个答案:

答案 0 :(得分:1)

  

&#39; HTTP:&#39;不被识别为内部或外部命令,可操作程序或批处理文件。

是因为url与wsdl(.exe)命令(应该是其参数)不在一行,并且批处理包含(这是简化视图)一系列命令,每个命令位于不同的行上。为了克服这一点,将2行合并为1:

System.out.println("Please type a message to be encrypted:");
message = scanner.nextLine();

或通过 ^ (插入符号)转义 eoln wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs http://localhost:20141/webserv.asmx?wsdl )字符:

\r\n

如果一切正常,您应该生成 bin / wsdlWalkthrough.cs 文件。