Webapi始终在远程服务器

时间:2016-11-30 20:27:18

标签: c# asp.net-web-api

我使用webapi 2创建了一个api,配置如下

public static void Register(HttpConfiguration config)
        {

             config.Routes.MapHttpRoute(
                name: "ControllerAndAction",
                routeTemplate: "api/{controller}/{action}"
            );



            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.EnableSystemDiagnosticsTracing();
            config.Filters.Add(new AuthorizeAPIRequest());
            config.Filters.Add(new AddCorsHeader());
            config.MessageHandlers.Add(new EncodingDelegateHandler());

        }

它在本地工作正常。但是当我把它放在远程服务器上时,所有请求都会返回401未经授权的错误。但是,bin文件和web.config文件完全相同。深入挖掘,我添加了对远程服务器的跟踪,并发现了以下

w3wp.exe Information: 0 : Operation=AuthorizeAPIRequest.OnAuthorizationAsync, Status=401 (Unauthorized)
w3wp.exe Information: 0 : Operation=askTheExpertController.ExecuteAsync, Status=401 (Unauthorized)
w3wp.exe Information: 0 : Operation=EncodingDelegateHandler.SendAsync, Status=401 (Unauthorized)

基本上,请求甚至不允许授权到远程服务器上的授权方法!本地跟踪日志如下所示

w3wp.exe Information: 0 : Operation=AuthorizeAPIRequest.OnAuthorizationAsync
w3wp.exe Information: 0 : Message='Parameter 'values' bound to the value 'LifespeakUserAdmin.Models.LifespeakAssetQueryValues'', Operation=ModelBinderParameterBinding.ExecuteBindingAsync
w3wp.exe Information: 0 : Message='Model state is valid. Values: values=LifespeakUserAdmin.Models.LifespeakAssetQueryValues', Operation=HttpActionBinding.ExecuteBindingAsync

我已经验证了本地和远程服务器上的dll和webconfig文件都是相同的。还有什么可以解释这个?有什么方法可以“强行”吗?允许访问这些方法的应用程序?

更新:我只需更改IIS中的主机名绑定即可实现此功能。主持人正在使用TLD .rocks - 当我将其更改为.com时。它神奇地工作 - 他们都指向同一个网站,所以不确定为什么会出现这种情况

0 个答案:

没有答案