我创建了一个简单的Asp.net web api应用程序。它在Visual Studio中运行时有效。在Visual Studio 2013中进行调试时,网址为http://localhost:63082/api/products/1507。
我在服务器上创建了一个IIS网站(mySite,端口为8081),并使用文件共享进行发布。但是,在服务器上尝试以下URL时,我总是遇到404错误。
http://localhost:8081/api/products/1507 (它显示错误页面中的物理路径是c:\ inetpub \ wwwroot \ mySite \ api \ products \ 1507。)
http://localhost:8081/mySite/api/products/1507 (它显示物理路径为c:\ inetpub \ wwwroot \ mySite \ mySite \ api \ products \ 1507)。
为什么网址不起作用?
控制器方法。
[Route("api/Products/{fileId}")]
public IEnumerable<Product> GetProductsByFileId(int fileId)
{
using (var db = new ProductContext())
{
var query = from b in db.Products where b.fileId == fileId select b;
if (query == null)
{
return null;
}
return query.ToList();
}
}
以下显示了所有已发布的文件。似乎应用程序没有二进制文件?这是Visual Studio发布的问题吗?
Directory: \\......\c$\inetpub\wwwroot\mySite Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 7/6/2015 6:21 PM bin -a--- 7/6/2015 11:23 AM 101 Global.asax -a--- 7/6/2015 4:50 PM 574 packages.config -a--- 7/6/2015 5:41 PM 4611 Web.config Directory: \\......\c$\inetpub\wwwroot\mySite\bin Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 7/6/2015 3:11 PM 5185232 EntityFramework.dll -a--- 7/6/2015 3:11 PM 599760 EntityFramework.SqlServer.dll -a--- 7/6/2015 11:21 AM 502272 Newtonsoft.Json.dll -a--- 7/6/2015 11:21 AM 185032 System.Net.Http.Formatting.dll -a--- 7/6/2015 11:21 AM 471240 System.Web.Http.dll -a--- 7/6/2015 11:21 AM 82120 System.Web.Http.WebHost.dll -a--- 7/6/2015 5:41 PM 109056 webapi.dll
答案 0 :(得分:0)
试试这个:
[Route("api/Products/{fileId}")]
public IHttpActionResult Get(int fileId)
{
Ok(GetProductsByFileId(fileId));
}
private IEnumerable<Product> GetProductsByFileId(int fileId)
{
using (var db = new ProductContext())
{
var query = from b in db.Products where b.fileId == fileId select b;
if (query == null)
{
return null;
}
return query.ToList();
}
}