我已经在自主服务中成功实现了Razor Viewpages,这些页面完美呈现,直到我更新到3.9.56.视图在Windows窗体应用程序中与Windows窗体客户端一起进行测试,该窗体客户端将使用来自服务的json响应.这仍然可以正常工作,但是现在当我测试Razor Views时,我在请求页面时不断收到以下异常:
ERROR: Error occured while Processing Request: [HttpCompileException] c:\Users\Cornel\AppData\Local\Temp\2msjdedu.0.cs(24): error CS0246: The type or namespace name 'ViewPage' could not be found (are you missing a using directive or an assembly reference?), Exception: c:\Users\Cornel\AppData\Local\Temp\2msjdedu.0.cs(24): error CS0246: The type or namespace name 'ViewPage' could not be found (are you missing a using directive or an assembly reference?)
我构建了一个小型控制台应用程序来托管服务,并且Razor Views和页面正确呈现.两个项目都具有相同的引用,对测试框架上的Windows窗体程序集引用有效.两个项目都在一个单独的程序集中从同一个管理类启动AppHost,并且所有视图都已发布.
配置文件的唯一区别是<userSettings>Windows窗体测试框架上的一节.
[编辑]
当我将@inherits ViewPage更改为@inherits ServiceStack.Razor.ViewPage时,一切都按预期工作
我创建了以下示例来测试外键,到目前为止,它运行良好.我希望能够做的是使用我构建的这个框架来设置关系的属性,并在保存Parent时保存子对象并自动设置PrimaryKey和Foreign Key.DataManager类公开Connection
public class DataManager
{
DataManager()
{
OrmLiteConfig.DialectProvider = SqliteDialect.Provider;
ConnectionString = SqliteFileDb;
updateTables();
}
private void updateTables()
{
using (var dbConn = OpenDbConnection())
{
dbConn.DropAndCreateTable<Person>();
dbConn.DropAndCreateTable<PhoneNumber>();
}
}
public static string SqliteFileDb = "~/App_Data/db.sqlite".MapAbsolutePath();
private static DataManager manager;
public static DataManager Manager {
get
{
if (manager == null)
manager = new DataManager();
return manager;
}
}
public IDbConnection InMemoryDbConnection { get; set; }
public IDbConnection OpenDbConnection(string connString = null)
{
connString = ConnectionString;
return connString.OpenDbConnection();
}
protected …Run Code Online (Sandbox Code Playgroud) 如何重新启动ServiceStack自托管Apphost?将我的AppHost实例设置为null并处理它无法正常工作,它会抛出以下异常:
System.ArgumentException: An entry with the same key already exists.
Run Code Online (Sandbox Code Playgroud)
我需要能够重新加载设置并启动AppHost,而无需重新启动托管AppHost的Windows服务
编辑:Scott和Moo-Juice建议在不同的AppDomain中运行AppHost是正确的解决方案.为了通过Cross Domain调用重新启动AppHost,我创建了第二个AppHost,它在Main AppDomain中运行,并从Scott的解决方案中调用Restart方法.在两个AppHost实例上启用CORS允许简单的$ ajax调用来重新启动服务,并在服务启动并返回请求后重新加载页面.