CS0433:'IHttpHandler'类型同时存在于ServiceStack和System.Web中



我继承了一个旧版ASP.NET应用程序,该应用程序在退役时需要支持,但由于以下错误,我发现一些网站将无法编译:

CS0433:类型"IHttpHandler"同时存在于"ServiceStack,Version=5.0.0.0,Culture=neutral,PublicKeyToken=null'和'System.Web,版本=4.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'

在临时ASP.NET文件中编译网站时发生错误。ASP.NET在Default.aspx页面后面创建的*.cs文件中有问题的行是:

[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
public class default_aspx : global::MyWebsite.Default, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler

因此,应该使用的System.Web.IHttpHandler接口显然是在System.Web.dll中声明的接口。但是,网站引用了本身引用ServiceStack.dll的业务服务,因为它实现了使用ServiceStack的API的客户端。因此,ServiceStack.dll在复杂情况下最终会出现在web项目的bin目录中,而且ServiceStack..dll还包括一个命名空间和接口System.web.IHttpHandler,因此出现了错误。

鉴于对ServiceStack的引用不是来自网站的直接引用,我似乎无法成功地将该引用别名为,从而使ServiceStack接口不会被引用为全局接口。并且导致错误的代码无论如何都是自动生成的。除了重写API客户端以使用HttpClient而不是ServiceStack类之外,还有其他方法吗?

听起来您正试图在ASP.NET Framework项目中包含适用于.NET Core的ServiceStack.dll的.NET标准版本。

依赖项应重新生成为目标(或多目标(ServiceStack的.NET v4.5内部版本(未定义此接口(,以便在ASP.NET项目中仅引用.NET Framework.dll。ServiceStack的.NET Standard 2.0 dll只能在ASP.NET核心应用程序中使用。

最新更新