【发布时间】:2016-02-16 20:56:21
【问题描述】:
我在尝试使用 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:' 不是内部或外部命令,可操作 程序或批处理文件。
在尝试解决问题时,我的 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: 时,我真的很怀疑。 超文本传输协议现在不是在架构级别集成了吗?
更新
'http:' 不是内部或外部命令、可运行程序或批处理文件。
是因为 url 与 wsdl(.exe) 命令(它应该是它的参数),并且批处理包含(这是 一系列命令的简化视图),每个命令都在不同的行上。 为了克服这个问题,将 2 行合并为 1:
wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs http://localhost:20141/webserv.asmx?wsdl或通过 ^(caret) 转义 eoln (
\r\n) 字符:wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs ^ http://localhost:20141/webserv.asmx?wsdl如果一切正常,你应该有你的 bin/wsdlWalkthrough.cs 文件生成。
CristiFati 的指示让我克服了最初的障碍。现在新的错误是:
错误:有一个错误处理 'http://localhost/webserv.asmx?wsdl'。 - 下载“http://localhost/webserv.asmx?wsdl”时出错。 - 请求失败,HTTP 状态为 404:未找到。
这似乎是我自己可以找到答案的事情,但仍然非常感谢您提供进一步的帮助。
【问题讨论】:
-
我不是 WSDL 专家,但 .asmx 内容看起来还不错。请注意,在您最新的错误消息中(不确定这是否是粘贴消息时的拼写错误)http: 和 //localhost 之间有一个额外的空格。该错误来自批处理文件吗?您可以尝试使用浏览器中抛出的相同链接:XML Parsing Error: not well-formed?另外,如果您在浏览器中遇到错误,您可以查看页面源吗?
标签: batch-file wsdl asmx command-prompt