Asp.net mvc 4 当使用IIS 7在服务器上部署时,WebAPI显示404错误,但作为selfhost可以正常工作

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

任何帮助都将不胜感激。我已经研究这个问题好几天了。下面是正在发生的事情

我在VS2012中使用mvc4下的模板创建了我的第一个WebApi服务。我保留了大多数默认设置。我确实在WebApiConfig中更改了路由器

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. &nbsp;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问题,因为这似乎是一个趋势?