You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS中创建.NET子站点遇EF存储版本错误及跳转需求咨询

问题解决方案

一、解决"Could not determine storage version"错误

结合已完成的排查,从以下方向进一步验证修复:

  • 检查虚拟应用程序的应用程序池配置

    1. 确认应用池的.NET Framework版本与其他正常运行的应用完全一致,避免版本不匹配
    2. 核查应用池身份权限:若使用自定义账户,确保该账户拥有数据库访问权限;若为ApplicationPoolIdentity,确认对应身份在数据库中具备读写权限
  • 验证EF配置与依赖完整性

    1. 检查子站点bin目录,确认所有Entity Framework相关DLL(如EntityFramework.dll、EntityFramework.SqlServer.dll)版本与正常应用一致,无缺失或版本冲突
    2. 查看主站点web.config的connectionStrings节点,若带有inheritInChildApplications="false"属性,会阻断子站点的配置继承,需移除该属性或在子站点明确配置完整连接字符串
    3. 在子站点DbContext构造函数中添加版本提示,强制EF指定数据库版本,示例代码:
    public class YourDbContext : DbContext
    {
        public YourDbContext() : base("YourConnectionStringName")
        {
            Database.SetInitializer<YourDbContext>(null);
            // 明确指定SQL Server版本,如2016对应"13.0"
            ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace
                .GetItems<EntityContainer>(DataSpace.CSpace).First()
                .ProviderManifestToken = "13.0";
        }
    }
    
  • 物理路径权限检查
    确认子站点物理路径inetpub\site\subsite的权限设置与主站点一致,应用池身份对该目录拥有读取、执行权限

二、实现子站点跳转至主站点的需求

针对「开发团队可测试子站点,外部访问/subsite跳转主站点」的需求,推荐两种方案:

方案1:通过MVC路由实现跳转

在子站点RouteConfig.cs中添加优先级最高的路由规则,匹配根路径并跳转:

// 放在所有路由最前方
routes.MapRoute(
    name: "RedirectToMainSite",
    url: "", // 对应/subsite的根路径
    defaults: new { controller = "Redirect", action = "ToMain" }
);

// 保留原有路由规则
routes.MapRoute("TaxSupport", "TaxSupport/{controller}/{action}/{id}", new { controller = "Tax", action = "Index", id = UrlParameter.Optional });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Tax", action = "Index", id = UrlParameter.Optional });

创建RedirectController处理跳转逻辑:

public class RedirectController : Controller
{
    public ActionResult ToMain()
    {
        // 永久重定向,对搜索引擎友好
        return RedirectPermanent("https://www.site.com");
    }
}

方案2:通过IIS URL重写实现跳转(无需修改代码)

在子站点web.config的<system.webServer>节点下添加重写规则:

<rewrite>
    <rules>
        <rule name="RedirectSubsiteToMain" stopProcessing="true">
            <match url="^$" /> <!-- 匹配子站点根路径 -->
            <action type="Redirect" url="https://www.site.com/" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

若需允许开发团队内部访问测试,可添加IP过滤条件:

<rule name="RedirectSubsiteToMain" stopProcessing="true">
    <match url="^$" />
    <conditions>
        <add input="{REMOTE_ADDR}" pattern="^192\.168\.0\.\d+$" negate="true" /> <!-- 排除内部IP段 -->
    </conditions>
    <action type="Redirect" url="https://www.site.com/" redirectType="Permanent" />
</rule>

内容的提问来源于stack exchange,提问作者Utkarsh bachchan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:10:54