title: c# web api can't call from web
body: <p>I have a <code>web api</code> solution with some <strong>models</strong> and <strong>controllers</strong>.</p>
  
  <p>This is an example of my <strong>model</strong>:</p>
  
  <pre><code>public class Category
  {
      [Key]
      public int Id { get; set; }
      [Required]
      public string Name { get; set; }
  }
  </code></pre>
  
  <p>And this is his <strong>controller</strong>:</p>
  
  <pre><code>public class CategoriesController : ApiController
  {
      private FrigoWebServiceContext db = new FrigoWebServiceContext();
  
      // GET: api/Categories
      [HttpGet]
      public string GetCategories()
      {
          return JsonConvert.SerializeObject(db.Categories.ToList());
      }
  
      // GET: api/Categories/5
      [ResponseType(typeof(string))]
      public string GetCategory(int id)
      {
          Category category = db.Categories.Find(id);
          if (category == null)
          {
              return null;
          }
  
          string jsonCategory = JsonConvert.SerializeObject(category);
          return jsonCategory;
      }
  
      protected override void Dispose(bool disposing)
      {
          if (disposing)
          {
              db.Dispose();
          }
          base.Dispose(disposing);
      }
  
      private bool CategoryExists(int id)
      {
          return db.Categories.Count(e =&gt; e.Id == id) &gt; 0;
      }
  }
  </code></pre>
  
  <p>Now, this is the <strong>config</strong>:</p>
  
  <pre><code>        config.Routes.MapHttpRoute(
              name: "GetId",
              routeTemplate: "api/{controller}/{id}"
              //defaults: new { id = RouteParameter.Optional }
          );
          config.Routes.MapHttpRoute(
              name: "GetAll",
              routeTemplate: "api/{controller}"
              //defaults: new { id = RouteParameter.Optional }
          );
  </code></pre>
  
  <p>but calling the following sites I'm not getting anything</p>
  
  <p>NOTE: I published with IIS the api with "<code>myAppName</code>" path name</p>
  
  <ul>
  <li><a href="http://localhost/myAppName/Api/CategoriesController" rel="nofollow">http://localhost/myAppName/Api/CategoriesController</a></li>
  <li><a href="http://localhost/myAppName/Api/CategoriesController/0" rel="nofollow">http://localhost/myAppName/Api/CategoriesController/0</a></li>
  <li><a href="http://localhost/myAppName/Api/Category" rel="nofollow">http://localhost/myAppName/Api/Category</a></li>
  <li><a href="http://localhost/myAppName/Api/Category/0" rel="nofollow">http://localhost/myAppName/Api/Category/0</a></li>
  <li><a href="http://localhost/myAppName/Api/CategoriesController/GetCategories" rel="nofollow">http://localhost/myAppName/Api/CategoriesController/GetCategories</a></li>
  <li><a href="http://localhost/myAppName/Api/Category/GetCategories" rel="nofollow">http://localhost/myAppName/Api/Category/GetCategories</a></li>
  <li><a href="http://localhost/myAppName/Api/Categories" rel="nofollow">http://localhost/myAppName/Api/Categories</a></li>
  </ul>
  
  <p>But noone of those is working</p>
  
  <p>this is the <strong>error</strong>:</p>
  
  <blockquote>
    <p>Error HTTP 404.0 - Not Found Desired resource has been removed,
    renamed or it's temporally unavaible</p>
  </blockquote>
  
  <p>I've seen some questions from the internet and I tried to use them but I can't figure out why this is not working.</p>
  
  <p>Any help will be appreciated, it's my first time with WebApi</p>
  
  <p>this is my <strong>Web.Config</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;configuration&gt;
    &lt;configSections&gt;
      &lt;section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /&gt;
    &lt;/configSections&gt;
    &lt;connectionStrings&gt;
      &lt;add name="FrigoWebServiceContext" connectionString= [***] /&gt;
    &lt;/connectionStrings&gt;
    &lt;appSettings&gt;&lt;/appSettings&gt;
    &lt;system.web&gt;
      &lt;compilation debug="true" targetFramework="4.5" /&gt;
      &lt;httpRuntime targetFramework="4.5" /&gt;
      &lt;httpModules&gt;
        &lt;add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /&gt;
      &lt;/httpModules&gt;
    &lt;/system.web&gt;
    &lt;system.webServer&gt;
      &lt;handlers&gt;
        &lt;remove name="ExtensionlessUrlHandler-Integrated-4.0" /&gt;
        &lt;remove name="OPTIONSVerbHandler" /&gt;
        &lt;remove name="TRACEVerbHandler" /&gt;
        &lt;add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /&gt;
      &lt;/handlers&gt;
      &lt;validation validateIntegratedModeConfiguration="false" /&gt;
      &lt;modules&gt;
        &lt;remove name="ApplicationInsightsWebTracking" /&gt;
        &lt;add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" /&gt;
      &lt;/modules&gt;
    &lt;/system.webServer&gt;
    &lt;runtime&gt;
      &lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&gt;
        &lt;dependentAssembly&gt;
          &lt;assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /&gt;
          &lt;bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /&gt;
        &lt;/dependentAssembly&gt;
        &lt;dependentAssembly&gt;
          &lt;assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /&gt;
          &lt;bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" /&gt;
        &lt;/dependentAssembly&gt;
        &lt;dependentAssembly&gt;
          &lt;assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /&gt;
          &lt;bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /&gt;
        &lt;/dependentAssembly&gt;
        &lt;dependentAssembly&gt;
          &lt;assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /&gt;
          &lt;bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /&gt;
        &lt;/dependentAssembly&gt;
      &lt;/assemblyBinding&gt;
    &lt;/runtime&gt;
    &lt;system.codedom&gt;
      &lt;compilers&gt;
        &lt;compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /&gt;
        &lt;compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&amp;quot;Web\&amp;quot; /optionInfer+" /&gt;
      &lt;/compilers&gt;
    &lt;/system.codedom&gt;
    &lt;entityFramework&gt;
      &lt;defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /&gt;
      &lt;providers&gt;
        &lt;provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /&gt;
      &lt;/providers&gt;
    &lt;/entityFramework&gt;
  &lt;/configuration&gt;
  </code></pre>