servicestack,Asp.net Mvc 3,servicestack" /> servicestack,Asp.net Mvc 3,servicestack" />

Asp.net mvc 3 使用ServiceStack和JsonP重组应用程序

Asp.net mvc 3 使用ServiceStack和JsonP重组应用程序,asp.net-mvc-3,servicestack,Asp.net Mvc 3,servicestack,我最初使用一个MVC应用程序,其中包含我的JQuery移动站点和我的ServiceStack rest服务。我的GET和POST都是通过AJAX完成的,一切正常 我现在将servicestack rest服务移动到ASP.NET应用程序,现在我遇到了跨域问题 我曾考虑过使用JSONP,但这将解决“GET”问题,但我读到我不能发出“post”请求(目前JSONP还不太熟悉) 我想知道我的选择是什么? 我应该吗 1) 只需将AJAX调用回我的MVC控制器,然后从那里调用我的新REST服务(在带有Se

我最初使用一个MVC应用程序,其中包含我的JQuery移动站点和我的ServiceStack rest服务。我的GET和POST都是通过AJAX完成的,一切正常

我现在将servicestack rest服务移动到ASP.NET应用程序,现在我遇到了跨域问题

我曾考虑过使用JSONP,但这将解决“GET”问题,但我读到我不能发出“post”请求(目前JSONP还不太熟悉)

我想知道我的选择是什么? 我应该吗

1) 只需将AJAX调用回我的MVC控制器,然后从那里调用我的新REST服务(在带有ServiceStack的ASP.net应用程序中)

2) 尽可能找到进行跨域调用的方法(从浏览器)


如果我选择1)是否会影响性能,因为我现在要使用MVC应用程序,然后调用ASP.NET服务堆栈rest服务。

我会投票支持选项1,特别是如果应用程序将在同一网络/域之外托管

也就是说,如果您对跨域路线感兴趣,那么这也是一种选择。关于通过jsonp实现跨域get,这篇文章极大地帮助我建立并运行了MVC:


跨域发布有点烦人,因为您需要执行GET请求并手动处理任何“GET”参数的序列化。

正如您所知,当您将ServiceStack和MVC托管在一起时,这不是一个问题,您可以轻松地使用NuGet Pacake进行设置,如演示中所示

使用反向代理 我不喜欢选项1),因为额外的代码样板和开销,您可以通过MVC将所有HTTP请求代理到ServiceStack

如果要使用代理,只需在本机/顶级反向代理服务器下配置它,并将以/api开头的所有路径路由到内部ServiceStack url,其他所有路径都将路由到MVC主机,这样开销更小、代码更简洁。如果使用IIS,则可以通过启用。这对于使用和进行设置来说也是相当简单的

启用跨域请求 您可以通过使用JSONP或启用CORS来进行跨域请求,以下是您在ServiceStack中实现这一点的方法:


谢谢,每分钟都在学习新东西:)。我将globalheaders放在Apphost.cs中,必须在RestService属性上添加选项,这一切都可以正常工作(不更改任何javascript/mvc代码:)。此外,如果我有crossdomain.xml文件,它的功能是否与CORS的功能不一样?crossdomain.xml的功能与此相同,但只适用于Flash+Silverlight