C# 谷歌+;“签名”;“入门”;项目-IIS的问题
使用C#/.NET Google+登录快速启动项目,我遇到了IIS6的问题。以下是我遵循的步骤:C# 谷歌+;“签名”;“入门”;项目-IIS的问题,c#,.net,iis-7,google-plus,C#,.net,Iis 7,Google Plus,使用C#/.NET Google+登录快速启动项目,我遇到了IIS6的问题。以下是我遵循的步骤: 从Github下载了该项目 修改index.html和signin.ashx文件以包含我的客户端ID和客户端密码 在我的机器上运行该项目(使用VisualStudio2010内置的web服务器)效果很好 使用IIS6发布到Windows 2003服务器 添加“index.html”作为网站的默认文档 将网站设置为使用为4.0.NET framework配置的应用程序池 试图从Chrome访问该页面
- 从Github下载了该项目
- 修改index.html和signin.ashx文件以包含我的客户端ID和客户端密码
- 在我的机器上运行该项目(使用VisualStudio2010内置的web服务器)效果很好
- 使用IIS6发布到Windows 2003服务器
- 添加“index.html”作为网站的默认文档
- 将网站设置为使用为4.0.NET framework配置的应用程序池
- 试图从Chrome访问该页面
POST https://myserver.com/gplussample//disconnect 404 (Not Found)
Could not create type 'GPlus_ServerSideFlow.Signin'.
问题是//disconnect
-没有页面名称(我认为它应该是signin.ashx,因为当我使用Visual Studio 2010在dev web服务器上运行该应用程序时,它是有效的)
然后,我尝试使用指定的页面名称访问该网站:
https://myserver.com/gplussample/signin.ashx
这会导致一个空白页面,再次查看Chrome DevTools,我看到.ashx处理程序出现400个错误请求。我搜索了一个又一个.ashx处理程序和“错误请求”错误的解决方案,但在这种情况下没有成功
认为IIS6是罪魁祸首,我将该网站发布到IIS7实例
没有在URL上指定页面名称(http://localhost/gplusoriginal/
),我遇到了与“断开”按钮相同的错误-无操作和404错误
当我将URL更改为http://localhost/gplusoriginal/signin.ashx
,我收到了以下错误:
POST https://myserver.com/gplussample//disconnect 404 (Not Found)
Could not create type 'GPlus_ServerSideFlow.Signin'.
再次回到Google,查看.ashx处理程序和IIS7的问题。我找到了一篇关于web.config的帖子,并在那里指定了处理程序,所以我尝试了一下
<system.webServer>
<handlers>
<add name="GPlus_ServerSideFlow.Signin" path="*.ashx" verb="*"
type="GPlus_ServerSideFlow.Signin" resourceType="Unspecified" />
</handlers>
</system.webServer>
将此代码段添加到web.config中解决了“无法创建类型”错误,但导致另一个400错误请求
所以,我的问题是:为了让这个示例项目正常工作,必须对II6或IIS7做些什么?在配置IIS时是否需要完成其他步骤?或者项目代码中缺少什么
谢谢示例的工作方式是,RESTful端点被ashx处理程序,
sign.ashx.cs
拦截。无法直接寻址处理程序,因此在global.ashx.cs
中设置路由,以将端点(/、/connect、/disconnect等)映射到该路由处理程序
在示例发布时,它假定内置web服务器在根端口上运行。移动到IIS时,需要将路径匹配器从等于更改为EndsWith,以便匹配要部署到的虚拟目录:
// Redirect base path to signin.
if (context.Request.Path.EndsWith("/"))
{
context.Response.RedirectPermanent("signin.ashx");
}
// This is reached when the root document is passed. Return HTML
// using index.html as a template.
if (context.Request.Path.EndsWith("/signin.ashx"))
{
抱歉耽搁了你的时间。。。但希望这能解决它!已经用IIS对其进行了测试,此更新可能会很快被合并回正式样本。Gus,感谢您的回复。我必须承认,我对这种类型的设置是完全陌生的,并且很难对事物的工作方式进行分类。话虽如此,我将该网站发布到我的IIS7.5实例,并尝试通过您的一些建议进行工作。在global.asax中,没有注册特定的端点-据我所知,RegisterRoutes方法似乎接受所有传入URL并强制它们通过Signin.ashx。然后,在Signin.ashx中,解析各个端点(断开连接、连接等)。另外,web.config没有指定默认的document.BTW,只是在做一些工作-我看到红色的“登录”按钮-单击该按钮,然后将我带到带有我的圆圈、个人资料照片等的页面。只要我到了那里,按钮/端点就会出现故障。您会看到模板中的登录按钮:)检查我的答案,并让我知道这是否有帮助!在深入挖掘之后,我在web.config中发现了一些需要添加的东西,以便IIS正确地路由处理程序,但最大的问题是答案中的代码行。我将站点发布到一个目录下的服务器上,所以这一位从未真正执行过——是的,它只是显示了模板。一旦我考虑到这一点,它就工作得很好。谢谢你的指点,抱歉问了个愚蠢的问题!非常感谢您在这方面的帮助。不用担心,谢谢您在部署到IIS时提醒我们注意问题!