Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 谷歌+;“签名”;“入门”;项目-IIS的问题_C#_.net_Iis 7_Google Plus - Fatal编程技术网

C# 谷歌+;“签名”;“入门”;项目-IIS的问题

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访问该页面

使用C#/.NET Google+登录快速启动项目,我遇到了IIS6的问题。以下是我遵循的步骤:

  • 从Github下载了该项目
  • 修改index.html和signin.ashx文件以包含我的客户端ID和客户端密码
  • 在我的机器上运行该项目(使用VisualStudio2010内置的web服务器)效果很好
  • 使用IIS6发布到Windows 2003服务器
  • 添加“index.html”作为网站的默认文档
  • 将网站设置为使用为4.0.NET framework配置的应用程序池
  • 试图从Chrome访问该页面
在URL()上没有指定页面的情况下访问该站点会打开Google+登录按钮。这非常有效,我带着我的个人资料照片、圆圈等进入页面

但是,当我单击“断开连接”按钮时,什么也没有发生。使用Chrome DevTools检查流程时,我看到以下错误:

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时提醒我们注意问题!