Asp.net mvc 4 当使用IIS 7在服务器上部署时,WebAPI显示404错误,但作为selfhost可以正常工作
任何帮助都将不胜感激。我已经研究这个问题好几天了。下面是正在发生的事情 我在VS2012中使用mvc4下的模板创建了我的第一个WebApi服务。我保留了大多数默认设置。我确实在WebApiConfig中更改了路由器Asp.net mvc 4 当使用IIS 7在服务器上部署时,WebAPI显示404错误,但作为selfhost可以正常工作,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,任何帮助都将不胜感激。我已经研究这个问题好几天了。下面是正在发生的事情 我在VS2012中使用mvc4下的模板创建了我的第一个WebApi服务。我保留了大多数默认设置。我确实在WebApiConfig中更改了路由器 using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace GetBalanceSV { public static class We
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace GetBalanceSV
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "SubscriberActivity/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
我可以在我的机器上以调试模式很好地运行它。我通过VS2012在我的机器上发布,并使用IIS将其作为自主机运行,可以调用get方法并毫无问题地获得响应。使用
"http://localhost/SubscriberActivity/Values/Testingingmystring"
我还可以将它部署在我们的web开发服务器上,并将IIS作为一个新的web站点部署在自己的主机上,这样在服务器上就可以正常运行。但是,当我使用同一个应用程序池将现有网站放在下面时,它失败了。404错误
我通过fiddler2运行了这个,这是我得到的响应
*HTTP/1.1 404 Not Found
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 07 Oct 2013 17:04:59 GMT
Content-Length: 1937
<!DOCTYPE html>
<html>
<head>
<title>The resource cannot be found.</title>
<meta name="viewport" content="width=device-width" />
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
@media screen and (max-width: 639px) {
pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }
}
@media screen and (max-width: 479px) {
pre { width: 280px; }
}
</style>
</head>
<body bgcolor="white">
<span><H1>Server Error in '/SubscriberActivity' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>The resource cannot be found.</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
<br><br>
<b> Requested URL: </b>/SubscriberActivity/values/testeing<br><br>
</body>
</html>*
*找不到HTTP/1.1 404
缓存控制:专用
内容类型:text/html;字符集=utf-8
服务器:Microsoft IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
日期:2013年10月7日星期一17:04:59 GMT
内容长度:1937
找不到资源。
正文{字体系列:“Verdana”;字体重量:正常;字体大小:.7em;颜色:黑色;}
p{字体系列:“Verdana”;字体大小:正常;颜色:黑色;页边顶部:-5px}
{字体系列:“Verdana”;字体大小:粗体;颜色:黑色;页边顶部:-5px}
H1{字体系列:“Verdana”;字体重量:正常;字体大小:18pt;颜色:红色}
H2{字体系列:“Verdana”;字体重量:正常;字体大小:14pt;颜色:褐红色}
前{字体系列:“控制台”,“Lucida控制台”,单空格;字体大小:11pt;边距:0;填充:0.5em;线条高度:14pt}
.marker{字体大小:粗体;颜色:黑色;文本装饰:无;}
.version{color:gray;}
.错误{页边距底部:10px;}
.expandable{文本装饰:下划线;字体大小:粗体;颜色:海军蓝;光标:手;}
@媒体屏幕和屏幕(最大宽度:639px){
pre{width:440px;溢出:自动;空白:预换行;换行:断开单词;}
}
@媒体屏幕和屏幕(最大宽度:479px){
前{宽度:280px;}
}
“/SubscriberActivity”应用程序中出现服务器错误。
找不到资源。
描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确。
请求的URL:/SubscriberActivity/values/Testing
*
有人知道为什么会这样吗 我不太清楚您所说的“但是当我使用同一个应用程序池将现有网站放在下面时,它会失败”。。。但无论如何,我相信你的问题在于:
- 也许iis需要更新以支持无扩展URL(除非它已经在相同的iis上运行良好,这意味着它已经支持它)。检查
- 确保您的http处理程序正确(请参阅visual studio中web.config的一节,并确保部署的版本具有相同的http处理程序)。因为我担心你的部署方式不对
您还可以检查此项检查现有应用程序池是处于经典模式还是集成模式。如果是经典模式,则将其更改为集成模式谢谢您的回复,胡代里。我的引语是“但是当我使用相同的应用程序池将web服务放在现有的web站点下时,它会失败。”我的意思是,当我将web服务添加到IIS通常附带的现有“默认web站点”下时。web服务将不响应。如果我右键单击“站点”,然后单击“添加新网站”,它就会工作。也许它需要在自己的网站上运行?我右键单击默认的网站节点并选择添加应用程序。不会尝试从visual studio发布该网站。您是否发现了这一点?我现在也有同样的问题。。。也许这是一个azure问题,因为这似乎是一个趋势?