Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
Asp.net 如何在非';你不能对外开放吗?_Asp.net_Web Applications - Fatal编程技术网

Asp.net 如何在非';你不能对外开放吗?

Asp.net 如何在非';你不能对外开放吗?,asp.net,web-applications,Asp.net,Web Applications,例如,您正在ASP.NET web应用程序中缓存不经常更新的数据。您在应用程序之外运行另一个进程,该进程会局部更新此数据,执行此操作时,您希望立即清除缓存的数据,以便下一个请求立即拾取新数据 缓存服务是在您的web应用程序的上下文中运行的,而不是在外部运行的-调用web应用程序以使其更新缓存的好方法是什么 当然,你可以一起破解一个叫做ClearTheCache的页面或web服务。然后,您的另一个进程可以调用它。当然,您不希望此过程在外部可用或在web应用程序上可见,因此,您可以检查此页面的传入请

例如,您正在ASP.NET web应用程序中缓存不经常更新的数据。您在应用程序之外运行另一个进程,该进程会局部更新此数据,执行此操作时,您希望立即清除缓存的数据,以便下一个请求立即拾取新数据

缓存服务是在您的web应用程序的上下文中运行的,而不是在外部运行的-调用web应用程序以使其更新缓存的好方法是什么

当然,你可以一起破解一个叫做ClearTheCache的页面或web服务。然后,您的另一个进程可以调用它。当然,您不希望此过程在外部可用或在web应用程序上可见,因此,您可以检查此页面的传入请求是否正在调用localhost,如果不是抛出404的话。这可以接受吗?这可能是伪造的吗(例如,如果您使用HttpApplication.Request.Url.Host)

我可以想出许多不同的方法来实现这一点,主要是围绕创建页面或web服务,并以某种方式限制对它的请求,但我不确定是否有任何方法特别优雅。我也不喜欢web应用程序定期轮询到另一个服务来检查它是否需要执行某些操作,我真的很喜欢推送解决方案


注意:缓存场景只是一个示例,如果需要,我可以在这里使用进程外缓存。问题在于,无论出于何种原因,在web应用程序外部但在受控上下文中调用代码。

考虑一种外部缓存机制,如EL的缓存块,它将同时对web和服务可用,或者一个用于缓存数据的文件


HTH.

不要担心本地主机的限制,将来可能需要从其他服务器推送。相反,在两者之间共享一个密钥(不对称或对称并不重要),让推送服务加密一个数据块(例如控制数据),并让接收方解密。如果块正确解密且数据可读,您可以安全地假设只有本应调用您的服务具有,并且您可以执行所需的操作!不是最整洁的解决方案,但允许您扩展到单个服务器之外

编辑

说了非对称密钥会更好,让推送服务保留私有部分,让网站保留公共部分

编辑2


让推送服务将生成密码文本的日期/时间放入数据块,然后客户端可以通过确保日期/时间在可接受的时间段内(比如一分钟)来确保没有发生重播攻击。

好主意,我不喜欢页面在外部可见的想法,即使它是一个未链接的URL。虽然如果数据没有解密,我可以抛出404,但这对于如何使用错误代码来说可能是相当顽皮的。因为错误的块而丢弃404是非常好的。你在告诉外界“这里没什么可看的,快走”。