2015-08-26 85 views
9

我有一个使用WebApi的开箱即用Visual Studio 2013 SPA。我将Twitter身份验证添加到了Startup.Auth.cs,并且当我发布到IIS网站的根目录或当我在VS中使用本地主机进行调试时,它的所有工作都很好。将WebApi发布到子文件夹

我想不通的是如何将项目发布到这样的子文件夹:

enter image description here

换句话说,http://localhost/api

网站本身的工作原理。它是从Twitter的RETURNURL总是重定向到http://localhost/#它包括正确的,但的access_token这种格式:

http://localhost/#access_token=fzgSLjF4W0QAHlhsNFZI ...

如果我手动键入“API /”它会打开默认的指数#access_token前页面,并通过Twitter进行身份验证。我已经调整了Twitter端的所有设置,javascript和.cs。我找不到发布到根网站的解决方案。我想发布到子文件夹应用程序。

对此提出建议?

+0

你有什么理由将其发布在_subfolder_?我建议你看看IIS中的虚拟主机。 –

+0

twitter中的回调网址 - 是否包含/ api? – Taleeb

+0

是的,它的确如此。我也尝试http://127.0.0.1/api – smoore4

回答

3

通过每个文件夹后,我注意到一个文件夹,我没有检查 - 提供商。还有一个名为ApplicationOAuthProviders.cs的类。一旦我更改了该文件中的值,社交登录就开始正确重定向。

有许多更改需要更改以发布到子文件夹;它们分别是:

  • ApplicationOAuthProvider:context.Request.Uri, “/ YourSubfolder /”
  • app.datamodel.js:self.userInfoUrl = “YourSubfolder /我”; (删除第一斜线)
  • app.viewmodel.js:了window.location = “/ YourSubfolder /帐户/授权的client_id =幅& RESPONSE_TYPE =记号&状态=?” + encodeURIComponent方法(window.location.hash);
  • WebApiConfig.cs:routeTemplate: “YourSubfolder/{}控制器/(编号)”
1

您是否尝试过在你的IIS站点添加虚拟目录?
我有我的API作为单独的项目,我可以通过使用www.your-web-site/API子文件夹来引用它

要做到这一点去你的网站上的IIS - >上下文菜单。然后:
enter image description here
并为您的API项目添加别名(子文件夹名)和物理路径。
它应该工作

+0

我试过,但有一个错误,说它需要成为一个Web应用程序。 – smoore4

+0

尝试创建API Web应用程序,在其中包含WebApi项目,然后将虚拟目录引用到您的API Web应用程序。 – Lokki

1

我去通这个地狱,这里是我做什么来解决这个问题:

内容的浏览只需点击子文件夹,并选择“转换为应用程序”。就是这样。

然后只需点击新创建的应用程序,点击浏览,它会显示Web API项目的默认页面。

3

this answer

使用Visual Studio “Web部署” 发布方法。

集“网站名称”,以 localhost/api而不是localhost

+1

我要测试这个。感谢您的发布。 – smoore4

+1

omg。为什么它必须如此简单? – kumaheiyama

相关问题