Fork me on GitHub

ASP.NET MVC4 Notes

原文:http://www.asp.net/whitepapers/mvc4-release-notes(工具翻译)

本文档描述 ASP.NET MVC 4

安装说明

ASP.NET MVC 4 为 Visual Studio 2010 可以从ASP.NET MVC 4 主页使用 Web 平台安装程序进行安装。

我们建议在安装 ASP.NET MVC 4 之前卸载任何以前安装的 ASP.NET MVC 4 预览。您可以升级的 ASP.NET MVC 4 Beta 和发布候选版本到 ASP.NET MVC 4 不卸载。

此版本不是与任何预览版本的.NET 框架 4.5 兼容的。到安装 ASP.NET MVC 4 前的最终版本,您必须单独升级任何已安装的预览版本的.NET 框架 4.5。

ASP.NET MVC 4 可以安装和运行--并排与 ASP.NET MVC 3。

文档

ASP.NET MVC 的文档是在以下 URL 在 MSDN 网站上可用:

http://go.microsoft.com/fwlink/?LinkID=243043

ASP.NET 网站 (http://www.asp.net/mvc/mvc4的 MVC 4 页的教程和其他有关 ASP.NET MVC 的信息可用).

支持

完全支持 ASP.NET MVC 4。如果您有关于使用此版本的问题你也可以将它们张贴到 ASP.NET MVC 论坛 (http://forums.asp.net/1146.aspx),经常能够提供非正式支持 ASP.NET 社区人士。

软件要求

Visual Studio 的 ASP.NET MVC 4 组件需要 PowerShell 2.0 和 Visual Studio 2010 与服务包 1 或 Visual Web 开发人员表示 2010 与服务包 1。

在 ASP.NET MVC 中 4 的新功能

本节介绍的功能,实行了在 ASP.NET MVC 4 版本中。

ASP.NET API Web

ASP.NET MVC 4 包括 ASP.NET Web API,用于创建 HTTP 服务,可以达到范围广泛的客户端包括浏览器和移动设备的新框架。ASP.NET Web API 也是一个理想的平台,用于构建 rest 风格的服务。

ASP.NET Web API 包括支持以下功能:

  • 现代 HTTP 编程模型:直接访问和处理 HTTP 请求和响应中使用新的强类型对象模型 HTTP 您 Web Api。相同编程模型和 HTTP 管道是对称可用通过新的HttpClient类型在客户端上。
  • 完全支持路线:ASP.NET Web API 支持完整的 ASP.NET 路由,包括路由参数和约束的路由功能集。此外,使用简单的约定来操作映射到 HTTP 方法。
  • 内容谈判:在客户端和服务器可以一起工作,以确定正在从 web API 返回的数据的正确格式。ASP.NET Web API 提供了默认支持的 XML,JSON,和窗体的 URL 编码格式,你可以通过添加您自己的格式化程序,来扩展这种支持或甚至替换默认内容谈判的策略。
  • 模型绑定和验证:模型联编程序提供来自不同地方的 HTTP 请求中提取数据并将这些消息部分转换成.NET 对象可以使用的 Web API 操作的简便方法。基于数据批注的操作参数也执行验证。
  • 筛选器:ASP.NET Web API 支持包括[授权]属性等知名筛选器的筛选器。您可以创作和插上您自己的筛选器操作、 授权和异常处理。
  • 查询组成:返回IQueryable ,使查询您的 OData 查询公约通过的 web API 的支持的操作上使用[Queryable]筛选器属性。
  • 改进的可测试性:在静态上下文对象中设置 HTTP 的详细信息,web API 操作工作与HttpRequestMessageHttpResponseMessage的实例。创建单元测试项目,以及您的 Web API 项目开始快速编写单元测试,为您的 Web API 功能。
  • 基于代码的配置:ASP.NET Web API 配置只被通过代码,离开您的配置文件的清洁。使用提供的服务定位器模式配置的扩展点。
  • 改进的控制反转 (IoC) 容器支持:ASP.NET Web API 提供对 IoC 容器通过改进依赖项的冲突解决程序抽象的极大支持
  • 自托管 pki:Web Api 可以承载您自己除了 IIS 进程中仍在使用的路线充分权力和其他功能的 Web API 的同时。
  • 创建自定义帮助和测试网页:您现在可以轻松地生成自定义帮助和测试页为您的 web Api 通过使用新的IApiExplorer服务来获取您的 web Api 的完整运行时描述。
  • 监测和诊断程序:ASP.NET Web API 现在提供了重量轻跟踪基础结构,使得它易于与现有的日志记录解决方案,如 System.Diagnostics、 ETW 和第三方日志记录框架集成。您可以启用跟踪通过提供ITraceWriter执行并将它添加到您的 web API 配置。
  • 链接生成:使用 ASP.NET Web API UrlHelper在同一应用程序中生成相关资源的链接。
  • Web API 项目模板:选择的新的 Web API 项目表单新 MVC 4 项目向导来快速获取与 ASP.NET Web API 的启动和运行。
  • 脚手架:使用添加控制器对话框快速脚手架基于实体框架的 web API 控制器基于模型类型。

有关 ASP.NET Web API 的更多详细信息请访问http://www.asp.net/web-api.

默认的项目模板的增强功能

已更新的模板,用于创建新的 ASP.NET MVC 4 项目来创建具有更多的现代外观的网站:

以及化妆品方面的改进,已改善中的新模板的功能。模板采用一种称为自适应呈现,看起来很好在桌面浏览器和移动浏览器无需任何自定义技术。

若要查看在行动中的自适应呈现,可以使用移动的仿真器,或只是试着调整桌面浏览器窗口较小。当浏览器窗口获取足够小时,会改变页面的布局。

移动项目模板

如果您正开始一个新项目,并想要创建一个网站专门为手机和平板电脑的浏览器,您可以使用新的移动应用程序项目模板。这基于 jQuery 移动、 开放源码库建设触摸优化的用户界面:

此模板包含的互联网应用程序模板相同的应用程序结构 (和控制器代码是几乎完全相同),但它是样式使用 jQuery 移动看起来很好,并基于触摸的移动设备上很好的表现。若要了解有关如何结构化和样式移动用户界面的详细信息,请参阅在jQuery 移动项目网站.

如果您已经有一个面向桌面的网站,您想要添加优化的移动视图,或如果您想要创建单个站点的服务样式有所不同的意见向桌面和移动浏览器,您可以使用新的显示模式功能。(见下一节)。

显示模式

新的显示模式功能,可以选择根据发出请求的浏览视图的应用程序。例如,如果桌面浏览器请求在主页上,应用程序可能使用的 Views\Home\Index.cshtml 模板。如果移动浏览器请求在主页上,应用程序可能会返回的 Views\Home\Index.mobile.cshtml 模板。

此外可以覆盖布局和它们的特定浏览器类型。例如:

  • 如果您的 Views\Shared 文件夹中包含的 _Layout.cshtml 和 _Layout.mobile.cshtml 模板,在默认情况下应用程序将使用 _Layout.mobile.cshtml 在移动浏览器和 _Layout.cshtml 的请求期间期间其他请求。
  • 如果文件夹包含 _MyPartial.cshtml 和 _MyPartial.mobile.cshtml,指令 @Html.Partial("_MyPartial") 将呈现 _MyPartial.mobile.cshtml 在移动浏览器和 _MyPartial.cshtml 的请求期间期间其他请求。

如果您想要创建更具体的意见、 布局或局部视图的其他设备,您可以注册一个新的DefaultDisplayMode实例,以指定要搜索的当一个请求满足特定条件时的名称。例如,您可以将下面的代码添加到 Global.asax 文件注册"iPhone"的字符串作为一个适用于苹果 iPhone 浏览器发出请求时的显示模式中的Application_Start方法:

DisplayModeProvider.Instance.Modes.Insert(0,new
DefaultDisplayMode("iPhone")
{
    ContextCondition=(context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone",StringComparison.OrdinalIgnoreCase)>=0)
 });

此代码运行,当苹果 iPhone 浏览器发出请求后,您的应用程序将使用的 Views\Shared\_Layout.iPhone.cshtml 布局 (如果存在)。有关显示模式的详细信息,请参见ASP.NET MVC 4 移动功能使用 DisplayModeProvider 的应用程序应安装固定 DisplayModes NuGet 包。ASP.NET 秋季 2012年更新中,新的项目模板包括固定 DisplayModes NuGet 包。有关此修复程序的详细信息,请参阅ASP.NET MVC 4 移动缓存 Bug Fixedd

jQuery 移动和移动功能

与 ASP.NET MVC 4 使用 jQuery 移动构建移动应用程序的信息,请参见ASP.NET MVC 4 手机功能教程.

  • 任务支持异步控制器

    您现在可以编写异步操作方法作为单一的方法返回的对象的类型的任务任务 <ActionResult>.

    有关更多信息,请参见使用异步方法在 ASP.NET MVC 4.

    Azure SDK

    ASP.NET MVC 4 支持的 Windows Azure sdk 1.6 和较新的版本。

    数据库迁移

    ASP.NET MVC 4 项目现在包括实体框架 5。在实体框架 5 大的特点之一是支持数据库迁移。此功能使您能够轻松地演变您使用专注于代码的同时保留在数据库中的数据迁移的数据库架构。关于数据库迁移的详细信息,请参见ASP.NET MVC 4 教程简介添加新字段对电影模型和表.

    空项目模板

    这样,您可以从完全干净的石板,是现在真正空 MVC 空项目模板。早期版本的空项目模板已经更名为基本。

    将控制器添加到任何项目文件夹

    您现在可以右键单击并从任何文件夹选择添加控制器,在你的 MVC 项目中。这使您更多的灵活性,来组织您的控制器,但是您想要包括在单独的文件夹中保持 MVC 和 Web API 控制器。

    捆绑和缩小

    捆绑和缩小框架使您能够减少 HTTP 请求,Web 页需要使通过将单个文件合并为一个单一的号码捆绑为脚本和 CSS 文件。它然后可以减少这些请求的总体大小贴图层捆绑包的内容。贴图层可以包括活动,如消除空白到缩短到甚至崩溃基于它们的语义的 CSS 选择器的变量名称。捆绑包是宣布并配置代码是轻松地引用和通过帮助器方法可以生成任一视图中单个链接到包或调试时,多个链接到包的各项内容。详细信息请参阅Bundling 和缩小.

    启用从 Facebook 和其他使用 OAuth 和 OpenID 的网站登录

    ASP.NET MVC 4 互联网项目模板中的默认模板现在包括对 OAuth 和 OpenID 登录使用 DotNetOpenAuth 库的支持。有关配置 OAuth 或 OpenID 提供程序的信息,请参阅OAuth/OpenID 支持 WebForms、 MVC 和网页在 ASP.NET 网页中的 OAuth 和 OpenID 功能文档.

    ASP.NET MVC 3 项目升级到 ASP.NET MVC 4

    ASP.NET MVC 4 可以安装与 ASP.NET MVC 3 中,在同一计算机上,这将使您灵活地选择何时升级到 ASP.NET MVC 4 ASP.NET MVC 3 应用程序中。

    升级最简单的方法是创建一个新的 ASP.NET MVC 4 项目并将从现有的 MVC 3 项目的所有视图、 控制器、 代码和内容文件都复制到新的项目,然后进行更新以匹配任何非 MVC 模板的新项目中的程序集引用包括脚组件使用的。如果你到 MVC 3 项目中的 Web.config 文件进行了更改,您必须也将这些更改合并到 Web.config 文件中的 MVC 4 项目。

    若要手动升级到版本 4 现有 ASP.NET MVC 3 应用程序,执行以下操作:

    在所有 Web.config 文件中的项目 (有一个根目录中的项目,在视图文件夹中,一个,一个在您的项目中每个区域的视图文件夹中),替换以下文本的每个实例 (注: System.Web.WebPages,版本 = 与 Visual Studio 2012 创建的项目中找不到 1.0.0.0):

    System.Web.Mvc,Version=3.0.0.0
    System.Web.WebPages,Version=1.0.0.0
    System.Web.Helpers,Version=1.0.0.0
    System.Web.WebPages.Razor,Version=1.0.0.0
    与以下相应的文本:
    
    System.Web.Mvc,Version=4.0.0.0
    System.Web.WebPages,Version=2.0.0.0
    System.Web.Helpers,Version=2.0.0.0
    System.Web.WebPages.Razor,Version=2.0.0.0

    在根 Web.config 文件中,更新到"2.0.0.0"的webPages:Version元素并添加一个新的PreserveLoginUrl项,值为"true":

    <appSettings>
      <addkey="webpages:Version"value="2.0.0.0"/>
      <addkey="PreserveLoginUrl"value="true"/>
    </appSettings>
    1. 在解决方案资源管理器,引用上单击鼠标右键并选择管理 NuGet 包。在左窗格中,选择Online\NuGet 官方包的源文件,然后更新以下:
      • ASP.NET MVC4
      • (可选) jQuery,jQuery 验证和 jQuery UI
      • (可选)实体框架
      • (探头)Modernizr
    2. 在解决方案资源管理器中,右击项目名称,然后选择卸载项目。然后再次右键单击该名称,并选择编辑项目名.csproj。
    3. 定位的ProjectTypeGuids元素和替换 {E3E379DF-F4C6-4180-9B81-6769533ABE47} {E53F8FEA-EAE0-44A6-8774-FFD645390401}。
    4. 保存所做的更改、 关闭您正在编辑的项目 (.csproj) 文件,右键单击该项目,然后选择重新加载项目。
    5. 如果该项目引用使用以前版本的 ASP.NET MVC 编译的任何第三方库,打开根 Web.config 文件并添加下列三个bindingRedirect元素的配置节下:
      <configuration>
        <!--... elements deleted for clarity ...-->
        <runtime>
          <assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentityname="System.Web.Helpers" 
                   publicKeyToken="31bf3856ad364e35"/>
              <bindingRedirectoldVersion="1.0.0.0"newVersion="2.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentityname="System.Web.Mvc" 
                   publicKeyToken="31bf3856ad364e35"/>
              <bindingRedirectoldVersion="1.0.0.0-3.0.0.0"newVersion="4.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentityname="System.Web.WebPages" 
                   publicKeyToken="31bf3856ad364e35"/>
              <bindingRedirectoldVersion="1.0.0.0"newVersion="2.0.0.0"/>
            </dependentAssembly>
          </assemblyBinding>
        </runtime>
      </configuration>

    ASP.NET MVC 4 候选发布版本中的更改

    发行说明,了解 ASP.NET MVC 4 释放候选人可以发现在这里:

    此版本从 ASP.NET MVC 4 释放候选的主要变化如下:

    • 每个控制器配置:ASP.NET Web API 控制器可以实现IControllerConfiguration如何设置自己的格式化程序、 行动选择器和参数用粘合剂的自定义属性与归因。HttpControllerConfigurationAttribute已被移除。
    • 每路由消息处理程序:现在,您可以指定一个给定路由的请求链中的最后一条消息处理程序。这使对乘车沿框架使用路由来调度到他们自己的支持 (非-IHttpController) 的终结点。
    • 进度通知:ProgressMessageHandler生成进度通知请求实体正在上载和下载的响应实体。使用此处理程序有可能来跟踪您远请求正文上传或下载响应正文。
    • 推送的内容:PushStreamContent类可以实现数据生产者那里想要直接写入请求或响应 (同步或异步) 使用流的方案。PushStreamContent时准备接受它调用与输出流的操作委托给的数据。因为只要必要和密切的流写入时已完成,开发人员可以然后写入到流中。PushStreamContent检测流的结束,并完成基础异步任务用于写出内容。
    • 创建的错误响应:使用HttpError类型始终代表错误信息验证错误和例外情况等,同时仍守IncludeErrorDetailPolicy使用新的CreateErrorResponse扩展方法来轻松地使用HttpError作为内容创建的错误响应。HttpError的内容是完全内容进行谈判。
    • MediaRangeMapping 删除:默认内容谈判代表现在处理的媒体类型范围。
    • 简单类型参数默认参数绑定现在是 [FromUri]:在以前版本的 ASP.NET Web API 简单类型参数的默认参数绑定使用模型绑定。简单类型参数的默认参数绑定现在是[FromUri].
    • 行动选择荣誉所需的参数:如果提供了所有必需的参数,来自 URI,ASP.NET Web API 中的行动选择将现在只选择一个操作。参数可以指定为可选,通过行动方法签名中的参数提供一个默认值。
    • 自定义 HTTP 参数绑定:使用ParameterBindingAttribute自定义特定操作参数的参数绑定或在HttpConfiguration上使用ParameterBindingRules自定义参数绑定更广泛。
    • MediaTypeFormatter 改进:格式化程序现在已经对全HttpContent实例的访问。
    • 主机缓冲政策选择:实施和配置的IHostBufferPolicySelector服务在 ASP.NET Web API,使主机以确定当缓冲是要使用的策略。
    • 主机不可知的方式访问客户端证书:使用GetClientCertificate扩展方法可以提供客户端证书从请求消息。
    • 内容谈判扩展性:通过从DefaultContentNegotiator派生和重写您所想的内容协商的任何方面,自定义内容协商。
    • 返回 406 不可接受响应支持:您现在可以返回 406 不可接受的响应在 ASP.NET Web API 通过创建DefaultContentNegotiatorexcludeMatchOnTypeOnly参数设置为true时找不到合适的格式化程序时.
    • 读取表单数据为 NameValueCollection 或 JToken:您可以读取表单数据或请求正文中的 URI 的查询字符串作为NameValueCollection分别使用的ParseQueryStringReadAsFormDataAsync的扩展方法。同样,您可以读取表单数据 URI 中的查询字符串或请求中正文作为JToken使用的TryReadQueryAsJsonReadAsAsync 扩展方法分别。
    • 多部分改进:现在是可能完全定制的MultipartStreamProvider写到 MIME 多部分数据的类型,它可以读取,以最佳的方式,向用户显示结果。您还可以挂钩上允许执行做任何后期处理它想要的 MIME 多部分身体部位上MultipartStreamProvider邮政处理步骤。例如, MultipartFormDataStreamProvider执行读取 HTML 表单中的数据部分,并将它们添加到NameValueCollection中,所以他们很容易从调用方获取在。
    • 链接代改进:UrlHelper不再取决于HttpControllerContext现在,您可以访问UrlHelper ,其中HttpRequestMessage是可用的任何上下文中。
    • 消息处理程序执行顺序变化:现在的它们以相反的顺序配置而不是顺序执行消息处理程序。
    • 帮助了消息处理程序的接线器:HttpClientFactory的可以向上DelegatingHandlers电线和使用所需管道准备去创建HttpClient 它还布线起来用替代内部处理程序 (默认值是HttpClientHandler) 提供的功能以及使用HttpMessageInvoker或另一个DelegatingHandlerHttpClient作为顶部-调用程序时做布线。
    •  Cdn 在 ASP.NET Web 优化支持:现在 ASP.NET Web 优化为 CDN 备用路径,从而使您可以指定每个包一个额外的 URL 哪些点到该内容传递网络上的同一资源提供支持。支持 Cdn 使您可以获得您的脚本和样式的捆绑在地理上更接近对 Web 应用程序的最终消费者。
    • ASP.NET Web API 路线和配置移动到WebApiConfig.Register静态方法,可以在测试代码中的 resused.ASP.NET Web API 路线以前被添加的RouteConfig.RegisterRoutes以及标准 MVC 路线。现在处理的默认 ASP.NET Web API 路线和配置的一个单独的WebApiConfig.Register方法,以方便测试。

    已知的问题和重大更改

    • 当应该返回移动视图时,ASP.NET MVC 4 的RC和 RTM 版本不正确返回缓存的桌面视图。
    • 打破了 Razor 视图引擎的变化以下类型被从System.Web.Mvc.Razor:
      • ModelSpan
      • MvcVBRazorCodeGenerator
      • MvcCSharpRazorCodeGenerator
      • MvcVBRazorCodeParser
      也被下面的方法:
      • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
      • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
      • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • 时 WebMatrix.WebData.dll 包含在 ASP.NET MVC 4 应用程序的 /bin 目录中,它接管 forms 身份验证 URL。WebMatrix.WebData.dll 程序集添加到应用程序 (例如,通过使用添加可部署的依赖项对话框时,请选择"与 Razor 语法的 ASP.NET Web 页面") 将会覆盖到 /account/logon,而不是 /account/login 的身份验证登录重定向所期望的默认的 ASP.NET MVC 帐户控制器。要防止这种行为和使用已经在 web.config 的身份验证部分中指定的 URL,可以添加调用 PreserveLoginUrl appSetting,并将它设置为 true:
      <appSettings> <addkey="PreserveLoginUrl"value="true"/></appSettings>
    • NuGet 包管理器安装时试图安装 ASP.NET MVC 4 并排安装的 Visual Studio 2010 和 Visual Web 开发人员 2010年失败。要运行 Visual Studio 2010 和可视化 Web 开发人员 2010 年与 ASP.NET MVC 4 必须在安装了两个版本的 Visual Studio 后安装 ASP.NET MVC 4。
    • 如果已卸载系统必备组件,则卸载 ASP.NET MVC 4 失败。要干净地卸载 ASP.NET MVC 4卸载 Visual Studio 之前,您必须卸载 ASP.NET MVC 4。
    • 安装 ASP.NET MVC 4 打破了 ASP.NET MVC 3 RTM 的应用程序。ASP.NET MVC 3 应用程序创建了与 RTM 发布 (不与ASP.NET MVC 3 工具更新发布) 需要进行以下更改,以便工作与 ASP.NET MVC 4 并排。建设项目无需作出这些更新结果以编译错误。

      所需的更新

      在根 Web.config 文件中,添加一个新的<appSettings>条目,与关键的webPages:Version和值1.0.0.0.

      <appSettings>
          <addkey="webpages:Version"value="1.0.0.0"/>
          <addkey="ClientValidationEnabled"value="true"/>
          <addkey="UnobtrusiveJavaScriptEnabled"value="true"/>
      </appSettings>
      1. 在解决方案资源管理器中,右击项目名称,然后选择卸载项目。然后再次右键单击该名称,并选择编辑项目名.csproj。
      2. 找到下面的程序集引用: <ReferenceInclude="System.Web.WebPages"/>
        <ReferenceInclude="System.Web.Helpers"/>

        用以下内容替换它们:

        <ReferenceInclude="System.Web.WebPages, Version=1.0.0.0,
        Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "
        />

        <ReferenceInclude=
        "System.Web.Helpers, Version=1.0.0.0,
        Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
        />
      3. 保存所做的更改,关闭项目 (.csproj) 文件您编辑,然后用鼠标右键单击该项目并选择重新加载。
    • 从 4.5 到目标 4.0 更改 ASP.NET MVC 4 项目不会更新 EntityFramework 程序集引用:如果您更改 ASP.NET MVC 4 项目到目标 4.0 后觅 4.5 对 EntityFramework 程序集的引用将仍然指向的 4.5 版本。要修复此问题卸载并重新安装 EntityFramework NuGet 包。
    • 403 禁止从 4.5 到目标 4.0 更改后在 Azure 上运行 ASP.NET MVC 4 应用程序时:如果您更改 ASP.NET MVC 4 项目为目标 4.0 后觅 4.5,然后部署到 Azure 您可能会看到 403 禁止在运行时错误。解决这一问题中添加以下内容你 web.config: <modules runAllManagedModulesForAllRequests="true" />
    • Visual Studio 2012 崩溃时您键入 ' \' 在剃刀文件中的文本字符串。工作围绕问题首先输入右引号的字符串文字。
    • 为 CHS、 TRK 和红隧语言浏览到"帐户/管理"在互联网模板结果中出现运行时错误。若要修复这个问题修改页后,可以分离出@User.Identity.Name综由它作为<strong>标记内的唯一内容。
    • 谷歌和 LinkedIn 提供程序不支持内 Azure 网站。部署到 Azure 的 Web 站点时,请使用替代身份验证提供程序。
    • 在使用 UriPathExtensionMapping 时与 IIS 8 快递/IIS,您将收到 404 未找到错误,当您尝试使用扩展名。静态文件处理程序会干扰到 web 使用UriPathExtensionMappings的 Api 请求。设置runAllManagedModulesForAllRequests = true在 web.config 要变通解决这一问题。
    • 不再调用 Controller.Execute 方法。所有 MVC 控制器现在始终以异步方式都执行。

 

posted @ 2013-01-13 14:25  花儿笑弯了腰  阅读(8414)  评论(0编辑  收藏  举报