相关疑难解决方法(0)

如何让ASP.NET Web API使用Chrome返回JSON而不是XML?

使用较新的ASP.NET Web API,在Chrome中我看到了XML - 如何更改它以请求JSON,以便我可以在浏览器中查看它?我相信它只是请求标题的一部分,我是否正确?

json google-chrome asp.net-web-api

1220
推荐指数
22
解决办法
78万
查看次数

如何将Web API添加到现有的ASP.NET MVC(5)Web应用程序项目?

假设您在创建新的MVC(5)项目时忘记勾选Web API复选框(将其添加到项目中),您需要做什么才能添加Web API并使其正常工作?

有一堆迁移问题,但似乎都没有将Web API添加到MVC 5项目的完整和最新步骤,而且似乎已经从一些旧的答案中改变了.

将Web API添加到MVC 4

添加GlobalConfiguration.Configure(WebApiConfig.Register)MVC 4

c# asp.net asp.net-mvc asp.net-web-api asp.net-mvc-5

141
推荐指数
1
解决办法
9万
查看次数

确保HttpConfiguration.EnsureInitialized()

我安装了Visual Studio 2013,当我运行我的应用程序时,我收到以下错误.

我不知道我要在哪里初始化这个对象.

该怎么办?

    Server Error in '/' Application.

The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc-routing

139
推荐指数
8
解决办法
7万
查看次数

MVC解决方案中的Web API在单独的项目中

我正在创建一个新的MVC4项目,研究让我相信现在通过Web API框架而不是控制器操作可以更好地实现从javascript到服务器端的通信.我的理解是否正确?

我假设我可以在Web API和MVC控制器之间共享所有属性等,所以面对它,对我来说似乎不是一个巨大的变化.

在设置应用程序时,我喜欢将组件拆分到项目中.我的计划是拥有一个MVC项目和一个Web API项目.但我遇到了问题.例如,我最终有2个应用程序,单独的路由设置等.

所以我的问题是,在MVC应用程序中,Web API框架应该位于同一个项目中,还是应该将Web API分离为自己的项目并解决问题?

c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

87
推荐指数
5
解决办法
5万
查看次数

将Web API添加到现有MVC Web应用程序后出现404错误

这里有一个很好的问题: 如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目中?

不幸的是,这还不足以解决我的问题.我已经尝试了两次,以确保我没有做错任何事.我右键单击"控制器"并添加了项目"Web API 2 Controller with actions,using Entity Framework",其中我选择了我的模型类和db上下文.一切都很顺利...但仍然...每次我试图访问/ api/Rest我得到404错误(我的控制器的名称是RestController).

c# asp.net rest asp.net-mvc asp.net-web-api

60
推荐指数
2
解决办法
4万
查看次数

所有ASP.NET Web API控制器都返回404

我正在尝试使用API​​控制器在ASP.NET MVC 4 Web应用程序内部工作.但是,每个请求都会导致404,我很难过.:/

我从项目模板定义的标准API控制器路由如下:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

在Global.asax中调用注册:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    // Register API routes
    WebApiConfig.Register(GlobalConfiguration.Configuration);

    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

    RouteConfig.RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)

我有一个这样的基本API控制器:

namespace Website.Controllers
{
    public class FavoritesController : ApiController
    {       
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new [] { "first", "second" };
        }

        // PUT api/<controller>/5
        public void Put(int id)
        { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-4 asp.net-web-api

58
推荐指数
6
解决办法
11万
查看次数

web api 2 routing - 无法找到资源

我已经将Web Api控制器添加到MVC 5应用程序,但是我一直得到错误404 - 无法找到资源.我已将GlobalConfiguration.Configure(WebApiConfig.Register)添加到Application_Start()

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
Run Code Online (Sandbox Code Playgroud)

我有注册的路线

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
} 
Run Code Online (Sandbox Code Playgroud)

asp.net-web-api

56
推荐指数
1
解决办法
2万
查看次数

MVC4中的Global.asax.cs页面中的问题

我的ASP.NET MVC 4项目,我的Global.asax.cs页面显示错误

 WebApiConfig.Register(GlobalConfiguration.Configuration);
Run Code Online (Sandbox Code Playgroud)

"GlobalConfiguration"这个名称在当前上下文中不存在

我做了很多控制器和视图以及所有......我如何解决这个问题并恢复我的项目?

这是我的上下文代码的其余部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;

namespace .....
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-mvc-4

43
推荐指数
3
解决办法
5万
查看次数

同一解决方案中的MVC和Web Api项目

我有一个MVC 4项目坐在N层应用程序之上.我现在要求能够以编程方式使用应用程序.我在同一个解决方案中创建了一个新的Web Api项目,它位于MVC项目的旁边,再次位于N层应用程序的顶层.

但是我不清楚这一切是如何工作的,因为MVC层是启动项目:它设置我的DI,自动播放器等,并且是我部署到服务器的项目.

那么这一切应该如何建立呢?我可以设置我的MVC项目来将所有/ api请求路由到新的Web Api项目吗?或者Web Api项目是否需要单独部署?

我不想做任何非传统的事情,所以如果有更常见的方式来设置这个,请指出我正确的方向.

谢谢.

c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

22
推荐指数
2
解决办法
3万
查看次数

在IIS服务器上的PUT API调用期间不会触发Application_BeginRequest

背景

我有一个带有WebAPI组件的MVC应用程序.我正在使用jQuery和AJAX来传递和接收来自WebAPI的数据.我依赖于在每次调用期间触发的Application_BeginRequest来执行一些平凡的任务.

问题

Application_BeginRequest始终触发对WebAPI的GET和POST调用.然而,当我做PUT调用的WebAPI的的Application_BeginRequest并没有开火,导致应用程序无法运行任务.实际上接收到PUT调用,因为正在执行控制器中的相应方法.

我在我的web.config文件中启用了PUT(如下所示).如何启用PUT方法调用以触发Application_BeginRequest方法?

注意: Application_BeginRequest在使用IIS Express时触发PUT调用,但在使用完整版本的IIS时则不触发.

项目:完整的项目可以在这里下载:BeginRequestFail.zip

Web.Config中

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <httpErrors errorMode="Custom" existingResponse="PassThrough">
      <remove statusCode="404" subStatusCode="-1" />
      <remove statusCode="403" subStatusCode="-1" />
      <remove statusCode="500" subStatusCode="-1" />
      <error statusCode="404" path="/Error/404" responseMode="ExecuteURL" />
      <error statusCode="403" path="/Error/403" responseMode="ExecuteURL" />
      <error statusCode="500" path="/Error/500" responseMode="ExecuteURL" /> …
Run Code Online (Sandbox Code Playgroud)

.net iis asp.net-mvc global-asax asp.net-web-api

7
推荐指数
1
解决办法
5720
查看次数

如何使用ASP.NET web mvc 6返回xml或json,具体取决于Accept Header

我使用ASP.NET mvc 6实现了一个web api控制器,我希望将控制器的结果作为json或xml返回,具体取决于客户端的Accept标头.例如,如果客户端发送带有"Accept:application/xml"的GET请求,则返回的响应应为xml.如果标题是"Accept:application/json",那么它应该是json.此时控制器总是返回json.有没有办法配置这个?注意:这个问题确实是如何从ASP.NET 5 MVC 6控制器操作返回XML的重复.但是那里提供的解决方案并没有解决我的问题.以下接受的答案对我有用.

下面给出了控制器,它是ASP.NET 5 web api模板提供的控制器:

[Route("api/[controller]")]
public class ValuesController : Controller
{
    // GET: api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    [HttpGet("{id:int}")]
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    [HttpPost]
    public void Post([FromBody]string value)
    {
    }

    // PUT api/values/5
    [HttpPut("{id}")]
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/values/5
    [HttpDelete("{id}")]
    public void Delete(int id)
    {
    } …
Run Code Online (Sandbox Code Playgroud)

asp.net-web-api asp.net-core-mvc

3
推荐指数
1
解决办法
2474
查看次数

Mvc Api 从请求中获取凭据

我花了很长时间才找到这方面的东西,尽管我认为这很简单......

我正在使用 .NET MVC 4.5 开发 API。我希望最终用户能够发送类似(PowerShell)的请求:

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, 
$securePassword)
$doc = $webclient.DownloadString("http://localhost:60023/api/getData?id=200")
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从我的应用程序的请求中提取凭据。

我的控制器看起来像:

namespace App.Controllers
{
    public IEnumerable<MyStruct> Get(int id)
    {
        // TODO: get credentials from request

        // validate credentials
        // code to create IEnumerable<MyStruct>
        return DataList;
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,如果我对凭据进行硬编码,一切都会正常,我需要弄清楚的是如何从最终用户的$webclient.Credentials.

我确信以前已经讨论过这个问题,但我已经搜索了几个小时但找不到答案。

我还差得远吗?

这不是验证 API 请求的好方法吗?我知道有一个 [Authorize] 属性可以使用内置身份验证系统,但我的应用程序使用自定义登录验证,所以我认为这不起作用。是否有理由以我想要的方式在控制器方法中验证凭据是一个坏主意?

.net c# api asp.net-mvc

3
推荐指数
1
解决办法
3904
查看次数