您好我正在使用HttpModule来调用WebAPI。 目前解决方案在系统本地工作但是一旦我在服务器中发布了代码,它就无法进行API调用。这是示例代码:
public class AppModule: IHttpModule
{
public void Init(HttpApplication httpApp)
{
httpApp.BeginRequest += OnBeginRequest;
httpApp.EndRequest += OnEndRequest;
httpApp.PreSendRequestHeaders += OnHeaderSent;
}
public void OnBeginRequest(Object sender, EventArgs e)
{
try
{
var httpApp = (HttpApplication)sender;
if (httpApp.Request.Path.StartsWith("/media/")) return;
string a = httpApp.Request.ServerVariables["ID"];
if (String.IsNullOrEmpty(a))
{
a = System.Configuration.ConfigurationManager.AppSettings["ID"];
}
var absolutepath = httpApp.Request.Url.AbsolutePath;
var values = new Dictionary<string, object>
{
{ "ID", a },
{ "Browser",httpApp.Request.Browser["Type"] },
{ "Url",httpApp.Request.Url.Scheme + "://" + httpApp.Request.Url.Authority + absolutepath},
{ "OperatingSys",httpApp.Request.Headers["User-Agent"] },
{ "IPAddss",httpApp.Request.UserHostAddress },
{ "LDate",System.DateTime.Now.ToString() },
};
var serializer = new JavaScriptSerializer();
var appData = serializer.Deserialize<DataVO>(serializer.Serialize(values));
AppModuleVO objAppModuleVO = new AppModuleVO();
//AppModuleVo has all the properties.
objAppModuleVO.WebUrl = System.Configuration.ConfigurationManager.AppSettings["APIURL"] + MethodCall;
objAppModuleVO.objDataVo = appData;
ThreadPool.QueueUserWorkItem(new WaitCallback(HandlePostRequest), objAppModuleVO);
}
catch (Exception ex)
{
}
}
}
我在Web.Config中注册了相同的内容
<system.web>
<httpModules>
<add name="AppModule" type="Fighter.Modules.AppModule"/>
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="AppModule" type="Fighter.Modules.AppModule"/>
</modules>
</system.webServer>
我不确定在服务器中发布代码后是否需要在IIS服务器中进行任何更改或注册。注意:我还在服务器中部署了API并提供了正确的路径,因为其他方法可以调用被排除的相同API 。请帮助。问题似乎是因为 IIS 目前我在管理管道模式下使用IIS 7.0作为 CLASSIC 。此问题的解决方法。
答案 0 :(得分:0)
渴望发表评论,请在您的web.config中尝试:
....
<system.webServer>
<modules>
<add name="AppModule" type="Fighter.Modules.AppModule"/>
</modules>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
说过你应该考虑使用IntegratedMode。