C# 极简Web API属性路由设置-共享主机帮助
我有一个超级简单的Web API。它公开不安全,只提供免费数据。我想将它从我的个人服务器移动到共享主机(例如:GoDaddy),但我遇到了问题 当试图访问共享主机解决方案上的属性路由Web API服务时,有许多与404状态相关的类似问题。但他们都没有为我工作过。这是我的超级简单当前设置:C# 极简Web API属性路由设置-共享主机帮助,c#,asp.net-web-api,attributerouting,C#,Asp.net Web Api,Attributerouting,我有一个超级简单的Web API。它公开不安全,只提供免费数据。我想将它从我的个人服务器移动到共享主机(例如:GoDaddy),但我遇到了问题 当试图访问共享主机解决方案上的属性路由Web API服务时,有许多与404状态相关的类似问题。但他们都没有为我工作过。这是我的超级简单当前设置: 创建一个名为YourApplicationName的新.NETFramework 4.5空C#Web应用程序 确保未选中所有复选框和包 添加新的“Global.asax”对象 将C#的全部内容替换为以下内容
- 创建一个名为YourApplicationName的新.NETFramework 4.5空C#Web应用程序
- 确保未选中所有复选框和包
- 添加新的“Global.asax”对象
- 将C#的全部内容替换为以下内容:
using System.Web.Http; namespace YourApplicationName { public class Global : System.Web.HttpApplication { protected void Application_Start() { System.Web.Mvc.AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure((HttpConfiguration config) => { config.MapHttpAttributeRoutes(); }); } } public class TestController : System.Web.Http.ApiController { [System.Web.Http.Route("api/Test")] public string Get() { return "Test Info"; } } }
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <customErrors mode="Off" /> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web> <system.webServer> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> </configuration>
- 将Web.config文件替换为以下文件:
using System.Web.Http; namespace YourApplicationName { public class Global : System.Web.HttpApplication { protected void Application_Start() { System.Web.Mvc.AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure((HttpConfiguration config) => { config.MapHttpAttributeRoutes(); }); } } public class TestController : System.Web.Http.ApiController { [System.Web.Http.Route("api/Test")] public string Get() { return "Test Info"; } } }
可能的问题5:有人说,要解决这个问题,您需要添加<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <customErrors mode="Off" /> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> </system.web> <system.webServer> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> </configuration>
,并使用httpHandlers删除并手动添加扩展处理程序和urlRoutingModulerunAllManagedModulesForAllRequests=“true”
我已经完成了所有这些变通方法的组合,但我无法想象真正的问题是什么。请让我知道我可能遗漏了什么,我花了好几天的时间在这上面。老式路线图有用吗?是的。如果我添加带有名称和routeTemplate的
,它会工作。但是,这将不再使用属性路由,并且无法达到此目的。但这是一个很好的补充信息,因为它确实适用于传统的路由配置。可以肯定的是:问题是如何让属性路由与共享主机,特别是GoDaddy一起工作。config.Routes.MapHttpRoute