首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server2012IISCore2应用程序在.NET上运行良好,但IIS7不能运行,可能是CORS问题

Server2012IISCore2应用程序在.NET上运行良好,但IIS7不能运行,可能是CORS问题
EN

Stack Overflow用户
提问于 2018-01-21 10:24:07
回答 1查看 196关注 0票数 0

我写了一个APICore2应用程序作为后端.NET应用程序。它在Visual Studio 2017中运行得很好,在我的开发机器上也运行得很好。前端是有角度的。

它在端口55564上运行。Angular运行在同一台服务器上,但端口是80。

服务器是带有IIS-7的server 2012。我根据我在互联网上找到的说明设置了它,但我无法让IIS为页面提供服务。我不断收到错误400 (而不是404),这似乎是某种类型的CORS问题。我在我的应用程序中实现了CORS。

当我直接在web根目录中打开命令提示符,并使用'dotnet XXXXX.dll‘直接启动Kestral时,它工作得很好。一切都运行得很好。所以现在,它是从命令提示符运行的,并且工作得很好。这意味着这是一个配置错误,而不是在我的应用程序中。但我确实想让它从IIS运行。我真的不知道我错过了什么。

IIS 7-设置我创建了一个标准网站。我将其设置为“无托管代码”。我设置了主机标头来响应'localhost:55564‘。在应用程序池中,我将身份分配给对web根文件夹拥有完全所有权的特定userid。

在我的全局HandlerMappings中。路径处理程序的OPTIONSVerbHandler *是IsapiModule可执行文件:%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

然后,我将选项谓词作为第一个处理程序映射。

在我的program.cs中:

代码语言:javascript
复制
WebHost
.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
    logging.AddConsole();
    logging.AddDebug();
})
.CaptureStartupErrors(true)
.UseStartup<Startup>()
.UseUrls("http://*:55564")
.Build();

在我的startup.cs中,在ConfigureServices下:

代码语言:javascript
复制
services.AddCors(options =>
{
    options.AddPolicy("CorsPolicy",
        builder => builder.AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials());
});

在我的startup.cs中,在Configure下:

代码语言:javascript
复制
app.UseAuthentication();

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
app.UseCors("CorsPolicy");
app.UseMvcWithDefaultRoute();

我的web.config

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\XXXXX.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type"/>
        <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
      </customHeaders>
    </httpProtocol>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule"/>
      <remove name="OPTIONSVerbHandler"/>
    </modules>
  </system.webServer>
</configuration>

我没主意了。我已经看了几十篇文章了。不确定我错过了什么。

但由于它是从命令行运行的,而不是从IIS-7运行的,所以我认为这一定是IIS-7配置问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-21 10:56:13

你能试着在你的startup.cs中添加UseIISIntegration()吗?

代码语言:javascript
复制
WebHost
.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
    logging.AddConsole();
    logging.AddDebug();
})
.CaptureStartupErrors(true)
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://*:55564")
.Build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48363088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档