我们需要一个简单的Web-API来从sql server获取数据。 由于我们的公司政策,它应该在IIS上运行。
我无法找到完成(免费)的解决方案。因此我在google搜索时遇到了这个解决方案 - > https://www.youtube.com/watch?v=nMGlaiNBbNU
几乎所有人都工作正常。我可以从我的表中获取完整列表。
我唯一无法解决的问题是。通过它只能获得一个数据集是不可能的 http://localhost:12345/api/GHServer/searchstring
SEARCHSTRING
应该是我表中的有效服务器名称。但是,我总是再次获得完整列表,而不是单个数据集。这可能是什么原因?
这是我的controller.cs
namespace GHServerDataAPI.Controllers
{
public class GHServerController : ApiController
{
public View_GHServerExportWithNet Get(String Server)
{
using (GHServerDevEntities entities = new GHServerDevEntities())
{
return entities.View_GHServerExportWithNet
.FirstOrDefault(S => S.Server == Server);
}
}
public IEnumerable<View_GHServerExportWithNet> Get()
{
using(GHServerDevEntities entities = new GHServerDevEntities())
{
return entities.View_GHServerExportWithNet.ToList();
}
}
}
}
IEnumerable<View_GHServerExportWithNet> Get()
- &gt;按预期工作。
public View_GHServerExportWithNet Get(String Server)
- &gt;虽然我确定我提供了有效的搜索字符串,但是无法正常工作或无法找到任何匹配项。
答案 0 :(得分:1)
如果在Visual Studio上进行调试,则可以使用诊断工具。从那里你可以看到ADO行动。从本质上讲,您将看到实体框架转换为SQL查询。获取生成的查询并针对SQL Server运行它。
如果您没有看到诊断工具
调试 - &gt; Windows - &gt;显示诊断工具
此外,我认为您没有达到接受字符串参数的方法。在那里设一个断点,我几乎可以肯定你不会打它。
如果是这种情况,请尝试
[Route("{server}"]
public View_GHServerExportWithNet GetByName(string server) { ... }
答案 1 :(得分:0)
看起来你无法击中那条路线。
将以下两个属性添加到您的方法
[Route("GHServer/{Server}")]
[HttpGet]
public View_GHServerExportWithNet Get(String Server)
在WebAPIConfig中启用属性路由,如下所述:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
// Other Web API configuration not shown.
}
}
如果这不起作用,请尝试将服务器字符串与&#34; ToUpper()&#34;进行比较。如下:
return entities.View_GHServerExportWithNet.FirstOrDefault(S =>
S.Server.Trim().ToUpper() == Server);