C# ASP.NET Web API在IIS中发布时不工作?
当我从Visual Studio运行或浏览ASP.NET Web API时,我构建了一个ASP.NET Web API,它工作正常,但当我在IIS中托管它并尝试浏览它时,它不工作,并出现以下错误: HTTP 400错误不是你的错,是这个链接的错(看起来好像断了) 这里是我发布web服务的地方 API方法是C# ASP.NET Web API在IIS中发布时不工作?,c#,asp.net-web-api,C#,Asp.net Web Api,当我从Visual Studio运行或浏览ASP.NET Web API时,我构建了一个ASP.NET Web API,它工作正常,但当我在IIS中托管它并尝试浏览它时,它不工作,并出现以下错误: HTTP 400错误不是你的错,是这个链接的错(看起来好像断了) 这里是我发布web服务的地方 API方法是 [HttpGet] [Route("findall")] public HttpResponseMessage findAll() { try
[HttpGet]
[Route("findall")]
public HttpResponseMessage findAll()
{
try
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent(JsonConvert.SerializeObject(mde.Products.ToList()));
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return response;
}
catch
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
}
我向其发送以下请求:
http://localhost:9810/api/product/findall
如何解决此问题?根据屏幕截图,您已将应用程序部署为默认站点上的虚拟应用程序。而/myserver被定义为虚拟路径。这意味着您的API根URL将是:
http://localhost:{IIS_PORT}/myserver/{YOUR_APP_ROUTES}
默认网站端口为80;如果您的帖子()中的URL在IIS express上正常工作,请尝试为您的IIS部署调用此URL:
http://localhost/myserver/api/product/findall
根据屏幕截图,您已将应用程序部署为默认站点上的虚拟应用程序。而/myserver被定义为虚拟路径。这意味着您的API根URL将是:
http://localhost:{IIS_PORT}/myserver/{YOUR_APP_ROUTES}
默认网站端口为80;如果您的帖子()中的URL在IIS express上正常工作,请尝试为您的IIS部署调用此URL:
http://localhost/myserver/api/product/findall
在命令提示符下执行此命令 %windir%\Microsoft.NET\Framework\v4.0.21006\aspnet\u regiis.exe-i
对我来说,它解决了这个问题在命令提示符下执行这个命令 %windir%\Microsoft.NET\Framework\v4.0.21006\aspnet\u regiis.exe-i
对我来说,它解决了这个问题您能提供失败的请求以及您希望处理该请求的API方法吗?另外,设置
customErrors=“Off”
有时可能会提供有关错误的更多详细信息。@ImantasSankalas我编辑了这篇文章,并提供了您要求的信息。而不是用catch
(all)来抑制异常,您可能希望记录或临时输出导致您响应BadRequest
的异常。也就是说,catch(异常e){/*使用“e”*/}
。首先,我只需删除try-catch块,让服务器输出异常详细信息。端口是否正确?看来您的请求中一定是“80”。@Imantas非常感谢您。。。您的评论帮助我找到了问题所在,即我应该将IIS用户添加到sql Server中的登录中。您能否提供失败的请求以及希望处理该请求的API方法?另外,设置customErrors=“Off”
有时可能会提供有关错误的更多详细信息。@ImantasSankalas我编辑了这篇文章,并提供了您要求的信息。而不是用catch
(all)来抑制异常,您可能希望记录或临时输出导致您响应BadRequest
的异常。也就是说,catch(异常e){/*使用“e”*/}
。首先,我只需删除try-catch块,让服务器输出异常详细信息。端口是否正确?看来您的请求中一定是“80”。@Imantas非常感谢您。。。您的评论帮助我找到问题所在,即我应该将IIS用户添加到sql server中的登录