2

我已经用 Bootstrap 建立了一个非常基本的 ServiceStack 项目,我试图让它看到我的主页(Razor View),但它没有,所以我得到了我主页的快照。以下是我创建项目的步骤:

  1. 创建新项目“ServiceStack ASP.Net with Bootstrap”
  2. 打开 Nuget 服务器控制台以下载缺少的 Servicestack 包。
  3. 建造。
  4. 将 Services.cs 重命名为 MyStuffServices.cs 并将 Model.cs 重命名为 MyStuffModel.cs
  5. 添加到“AppHost.cs”:

    SetConfig(new HostConfig
            {
                DefaultRedirectPath = "/Home"
            }); 
    
  6. 将“_layout.cshtml”从 /veiws/shared 移动到 /views 文件夹

  7. 将“Home.cshtml”添加到 /views
  8. 向 Home.cshtml 添加了次要文本
  9. 添加到 MyStuffService.cs

    public class HomeService : Service
    {
         [DefaultView("Home")]
         public int Get(Home request)
         {
             return 0;
         }
    }   
    
  10. 添加到 MyStuffModel.cs:

    [Route("/home", "GET")]    
    public class Home : IReturn<int>
    {
    
    }
    
  11. 建造。
  12. 运行到 Internet Explorer - 获取快照页面。

这是我的 AppHost.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Funq;
    using ServiceStack;
    using ServiceStack.Razor;
    using MyStuff.ServiceInterface;

    namespace MyStuff
    {
    public class AppHost : AppHostBase
    {
    /// <summary>
    /// Default constructor.
    /// Base constructor requires a name and assembly to locate web service classes. 
    /// </summary>
    public AppHost()
        : base("MyStuff", typeof(MyStuffServices).Assembly)
    {

    }

    /// <summary>
    /// Application specific configuration
    /// This method should initialize any IoC resources utilized by your web service classes.
    /// </summary>
    /// <param name="container"></param>
    public override void Configure(Container container)
    {
        //Config examples
        //this.Plugins.Add(new PostmanFeature());
        //this.Plugins.Add(new CorsFeature());

        this.Plugins.Add(new RazorFormat());

        SetConfig(new HostConfig
        {
            DefaultRedirectPath = "/Home"
        });
    }
}
}

这是我的 Global.asax

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.SessionState;

    namespace MyStuff
    {
        public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
    {
        new AppHost().Init();
    }
}
}

我没有错误,包管理器说我没有丢失任何包。我觉得我缺少一个步骤,非常感谢任何帮助。

更新:在调试时执行时,这是我用 Internet Explorer 打开时得到的

@inherits ViewPage
@{
    ViewBag.Title = "Hello World Service";
}
<div>
    <div>
        <input class="form-control input-lg" id="Name" type="text"     placeholder="Type your name">
        <p id="helloResult" style="margin-top: 15px;font-size: large"></p>
    </div>
</div>
<script>
    $('#Name').keyup(function () {
        var name = $('#Name').val();
        if (name) {
            $.getJSON('/hello/' + name)
                 .success(function (response) {
                     $('#helloResult').html(response.Result);
                });
        } else {
             $('#helloResult').html('');
        }
    });
</script>
4

1 回答 1

2

看起来这个问题可能来自现有的 MVC Razor 项目模板,该模板正在添加Microsoft.AspNet.Razor.3.2.2覆盖ServiceStack.Razor引用的 NuGet 包。

避免这种情况的一种方法是在添加新视图时使用基本的 HTML 项目模板并使用cshtml扩展名对其进行命名。

HTML 文件变通

这将避免来自 MVC 项模板的不需要的 NuGet 引用。

为了使这一点更加直接和明显,ServiceStackVS 扩展已更新为包含一个简单的 Razor 项目模板,该模板不添加有问题的 Microsoft.AspNet.Razor.3.2.2 NuGet 包,而只是添加了一个空白 HTML 页面。

ServiceStackVS Razor 项目模板

如果您不小心使用了 MVC 项目模板之一,要修复您的项目,您将需要执行以下步骤。

  1. 右键单击项目-> 管理 NuGet 包
  2. Installed packages在左上角选项卡中选择(VS 2013)
  3. 卸载 Microsoft ASP.NET Razor 相关包
  4. 卸载 ServiceStack.Razor
  5. 重新安装 ServiceStack.Razor
  6. 在添加 Razor 项目之前,System.Web 的删除<runtime>条目以前不存在。

希望有帮助。

于 2015-05-24T02:51:42.297 回答