asp.net API在Godaddy服务器上不能正常工作,但是在本地可以正常工作

yhuiod9q  于 2023-01-22  发布在  .NET
关注(0)|答案(2)|浏览(164)

当我在godaddy服务器上运行Web API(www.example.com/api/values)时,我遇到错误,它显示**(404 Not Found请求的文档在此服务器上未找到。)**。但它在本地工作正常。
我已经手动上传的文件使用FTP(FileZilla)在Godaddy和Godaddy服务器也支持ASP.NET托管。
下面是在Web API中使用的代码:
ValuesController.cs

namespace Webapi {
 public class ValuesController : ApiController {
    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/<controller>/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/<controller>
    public void Post([FromBody]string value)
    {
    }

    // PUT api/<controller>/5
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/<controller>/5
    public void Delete(int id)
    {
    }
  }
}

Valueswebconfig.cs

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

       // config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

        //// Custom Formatters:
        //config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(
        //    config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml"));

        //var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
        //jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

    }

  }
}

Web.config

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

<configuration>

<system.web>
  <compilation debug="true" targetFramework="4.5.2" />
  <httpRuntime targetFramework="4.5.2" />
</system.web>

<system.webServer>
<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer></configuration>
nwsw7zdq

nwsw7zdq1#

您访问的网页不存在,无法提供所请求的网址(URL)(扩展名减去URL). Windows共享主机(Plesk)在GoDaddy上无法API(即使它支持.NET和IIS等)。检查您是否可以访问您主机的公共目录中的index.html文件。您可以创建一个index.html,如果您还没有,请将其部署到GoDaddy托管上的公共控制器。
您可以在GoDaddy或AZURE上购买虚拟机。

ktecyv1j

ktecyv1j2#

这对我很有效:在您的GoDaddy帐户中打开Plesk并点击虚拟目录。只需创建一个虚拟目录并将您的API文件移动到那里,您就完成了。
Check this image

相关问题