gpt4 book ai didi

c# - 为什么我的 ASP.NET 5 应用程序不能在 IIS 7.5 上运行?

转载 作者:太空狗 更新时间:2023-10-29 23:37:26 24 4
gpt4 key购买 nike

我正在使用 IIS 7.5 运行 ASP.NET 5 (Core)。我已经安装了 httpPlatformHandler 并将站点的物理路径(在 IIS 中)设置为我从 visual studio 2015 发布的 wwwroot 文件夹。我得到的只是空白的连续加载页面。我很确定我已经正确连接了所有东西。此外,如果我取消注释 Configure 方法中的 app.Run 语句并注释掉 app.UseIISPlatformHandler、app.UseDefaultFiles、app.UseStaticFiles 和 app.UseMVC,它也能正常加载。

我的代码如下。我不知道此时还能做什么。有什么建议么?如果需要任何其他代码片段,请告诉我。

Startup.cs(配置方法)

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{

app.UseIISPlatformHandler();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc();

//app.Run(async (context) =>
//{
// var greeting = greeter.GetGreeting();
// await context.Response.WriteAsync(greeting);
//});
}

网络配置

<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600" forwardWindowsAuthToken="true" />

新编辑。我已将我的文件夹结构更新为 MVC(使用 Controller 、 View 等),并且稍微更改了 Configure 方法。现在它加载一个空白屏幕并且控制台正在记录 404 not found。还有什么建议吗?

添加我的完整 Startup.cs:

        public IConfiguration Configuration { get; set; }
public static string ConnectionString { get; set; }

public Startup()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsetting.json")
.AddEnvironmentVariables();

Configuration = builder.Build();
ConnectionString = Configuration.GetSection("connString").Value;
}

// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseIISPlatformHandler();
//app.UseDefaultFiles();
app.UseFileServer(true);
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
}

// Entry point for the application.
public static void Main(string[] args) => WebApplication.Run<Startup>(args);

最佳答案

您是否查看了 IIS 日志以查看是否向 IIS 发出了请求?

您还可以尝试在 Startup 类的 Configure() 方法中定义的每个中间件模块之间放置一个简单的中间件模块。您的中间件可以向 Windows 事件日志写入一条消息,说明它在 Http 管道中的位置以及响应正文的内容。有点像放入警报以调试 Javascript。这至少会让您知道它在哪里挂起或清除响应主体。

我在 github 上发布了一个非常容易理解的演示,演示了如何通过三个简单的步骤创建中间件。点击here去那个演示。

更新:尝试将您的 Configure() 方法更改为以下代码(如果我的设置不正确,请输入您自己的路线)。

app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear());
app.UseStaticFiles();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

关于c# - 为什么我的 ASP.NET 5 应用程序不能在 IIS 7.5 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com