.bat Error: 'http:' is not recognized as an internal or external command, operable program or batch file

.bat Error: 'http:' is not recognized as an internal or external command, operable program or batch file

我在尝试设置时遇到了另一个死胡同,更不用说 运行,使用 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 的开发人员命令提示符上 运行 makeWS.bat 时,我收到错误:

'http:' is not recognized as an internal or external command, operable program, or batch file.

在尝试解决问题时,我的 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 Parsing Error: not well-formed

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

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

我尝试关闭 Auto运行,我已将 http 地址添加为 系统变量,但什么都没有工作了。有没有人能够找出我的问题,因为当我的 VS2012 开发人员命令提示符 说它无法识别 http: 时,我真的不相信。 超文本传输​​协议现在不是在体系结构级别集成了吗?

更新

'http:' is not recognized as an internal or external command, operable program, or batch file.

是因为 url 与 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 的指导帮助我克服了最初的障碍。现在新的错误是:

Error: There was an error processing 'http: //localhost/webserv.asmx?wsdl'. -There was an error downloading 'http: //localhost/webserv.asmx?wsdl'. -The request failed with HTTP status 404: Not Found.

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

'http:' is not recognized as an internal or external command, operable program, or batch file.

是因为 url 与 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 文件。