我在服务器中托管了一项服务。服务身份验证使用Windows身份验证。我想在Visual Studio 2010中的网站开发中使用此服务。当我尝试添加引用时,它会显示以下错误。
“Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service.”
我应该怎样做才能克服它并能够使用服务进行开发?
注意:错误信息很明显。我正在寻找的是解决这个问题的最佳方法。
注意:当我在Mozilla Firefox中键入服务地址时,它会询问我的Windows凭据 - 输入凭据时它会为我提供服务说明。问题是当我通过Visual Studio使用它时。
答案 0 :(得分:1)
如果我理解正确,您的服务已经运行愉快且使用Windows身份验证,因此它需要调用应用程序,您的网站也使用Windows身份验证。
当您尝试添加引用时,VS将使用“项目属性”中定义的任何Web服务器在后台启动您的站点。您说您使用内置Web服务器(也称为Cassini或Webdev)启动您的站点。您需要确保您的站点使用Windows身份验证。您可以从服务的项目属性执行此操作(右键单击根文件夹并选择“属性”)。在那里,您将看到一个Web选项卡,其中包含一个NTLM身份验证复选框 - 确保选中该选项卡。
另外,请确保使用:
<system.web>
<authentication mode="Windows">
...
在你的web.config中。
但是,如果您想使用IIS本身,我假设您已安装它并知道如何定义Web应用程序。根据您运行的Windows版本,您可能安装了IIS,也可能没有安装IIS,或者可能无法安装(使用“控制面板”中的“程序和功能”)。如果您没有IIS,可以从此处安装IIS Express:http://learn.iis.net/page.aspx/868/iis-express-overview/
安装IIS并定义应用程序根目录并将目录指向本地源文件夹后,为该Web应用程序/站点启用Windows(NTLM)身份验证。如何执行此操作取决于您运行的IIS版本,但通常是通过单击“身份验证”图标。您可能需要禁用匿名以及启用Windows身份验证,以便强制所有请求进入Windows身份验证。对于不支持自动NTLM身份验证的浏览器,我也打开了基本表单身份验证。
一旦定义了IIS应用程序,就可以使用它来从Visual Studio而不是内置Web服务器进行调试。您还可以通过选择“使用本地IIS服务器”并选择上面创建的IIS站点的URL来从“项目属性”执行此操作。或者,VS可以为您创建IIS站点定义(如果它尚不存在)。
上述任何一种方法都应确保当VS启动您的站点以添加引用时,它将使用身份验证以及运行时。请注意,您可以手动添加引用,而无需启动站点。然后,您只需要确保在运行时进行Windows身份验证,如上所述。