【发布时间】:2012-08-02 00:03:43
【问题描述】:
我有一台带有 SQL Server 2012 Express 数据库的服务器。我通过身份验证连接到它,并将它用作 ASP.NET MVC 4 应用程序的后端。
通过这个应用程序,我还开发了一个 API。在我自己的应用程序中使用 jQuery 以编程方式调用 API 工作正常。查询数据库以获取信息也可以。
但是,当我从 VS2010 运行应用程序并尝试使用可访问数据库的 URL 访问 API 时,我收到 HTTP 500 错误。
为了确保这个问题不在我的应用程序端,然后我修改了 API 资源,使其获取本地数组(而不是来自数据库的信息),当我点击相同的 URL 时,它返回的信息是localhost 页面上的 XML 表单。
问题似乎是对 API 的 URL 调用尝试连接到数据库,而不是作为经过身份验证的用户(我),而是从浏览器。
如何配置 SQL Server 以允许在浏览器中对 API 进行 URL 调用以访问数据库并以 JSON/XML 形式返回数据? (例如,就像您可以使用 Twitter REST API 一样)
更新: HTTP 请求的调试输出:
请求网址:http://localhost:5555/api/Performance/ShowMachines
请求方法:GET
状态码:500 内部服务器错误
请求标头查看源代码
接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3
接受编码:gzip、deflate、sdch
Accept-Language:en-US,en;q=0.8
连接:保持活动状态
主机:本地主机:5555
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11
响应标头查看源代码
缓存控制:私有
连接:关闭
内容长度:0
日期:格林威治标准时间 2012 年 8 月 2 日星期四 16:40:11
服务器:ASP.NET 开发服务器/10.0.0.0
X-AspNet-版本:4.0.30319
【问题讨论】:
-
你的数据库连接字符串是什么?
-
我使用服务器资源管理器上的“连接到数据库”工具连接到它,然后将表拖到一个 LINQ to SQL 类中,所以实际上没有连接字符串传统的 SQL。但是,如果您不介意我问,这与调用反过来访问数据库的 API 有什么关系?例如,如果您在浏览器中输入此 URL api.twitter.com/1/users/…,您将在浏览器中以 XML 格式获取 Twitter 用户 twitterapi 和 twitter 的信息,这些信息显然是从他们的数据库中提取的。
-
Linq to SQL 设计器应该已经在您的 web.config 中设置了连接字符串。不过,得到 500 错误并没有真正的帮助。抛出了什么异常?
-
没有抛出异常。我只是在浏览器中输入 URL,例如 localhost:5555/api/Performance/ShowMachines 请注意,当我将它访问的数据设置为应用程序中的数组而不是数据库中的数组时,这是有效的,所以它是路由没有问题。我得到 500 错误。连接字符串为:
标签: sql-server asp.net-mvc asp.net-web-api